Junior — Middle
Какво означава определението за обхват за бинове с стойности singleton и prototype в Spring и как това влияе на тяхното поведение?
sobes.tech AI
Отговор от AI
В Spring обхватът на видимост (scope) на бина определя времето на живот и видимостта на екземпляра на бина.
-
singleton — това е подразбиращият се обхват. Всеки път, когато се поиска бин с този scope, Spring връща същия екземпляр през целия жизнен цикъл на контейнера. Това означава, че бинът се създава веднъж и се използва повторно.
-
prototype — при всяко искане се създава нов екземпляр на бина. Spring не управлява жизнения цикъл на тези бинове след създаването им, затова всеки повикване на
getBeanвръща нов обект.
Влияние върху поведението:
- Singleton биновете спестяват ресурси и осигуряват споделено състояние за всички потребители.
- Prototype биновете са полезни, когато е необходим нов екземпляр с независимо състояние за всяко използване.
Пример:
@Component
@Scope("prototype")
public class MyPrototypeBean {
// всяко извикване на getBean ще създаде нов обект
}
@Component
@Scope("singleton")
public class MySingletonBean {
// един обект за целия контейнер
}
Така изборът на scope влияе върху начина и времето на създаване на обектите и колко дълго те живеят в приложението.