Sobes.tech
Junior — Middle

Тәуелділікті инъекциялау контекстінде Singleton және Prototype аясындағы айырмашылық неде?

sobes.tech AI

AI-дан жауап

Контекстте тәуелділікті енгізу кезінде көрініс ауқымы (scope) объектілердің өмірлік циклін және жасалатын көшірмелер санын анықтайды.

  • Singleton: объект бүкіл қолданба немесе DI контейнерінің өмірлік циклінде бір рет жасалады. Барлық сұраулар осы тәуелділікке бірдей көшірмені алады. Бұл қызметтер үшін ыңғайлы, олар күйін сақтау немесе ортақ болу керек.

  • Prototype: әр сұрауда жаңа объект көшірмесі жасалады. Бұл тәуелсіз объект қажет болғанда пайдалы, ол өз күйімен.

Мысал:

// Singleton ауқымы
@Component
@Scope("singleton")
public class MyService {
    // қолданба бойынша бір көшірме
}

// Prototype ауқымы
@Component
@Scope("prototype")
public class MyPrototypeService {
    // әр сұрауда жаңа көшірме
}

Осылайша, Singleton бірегей көшірмені қамтамасыз етеді, ал Prototype — бірнеше тәуелсіз көшірмелер, бұл қолданба күйін басқару мен өнімділікке әсер етеді.