Ce înseamnă definirea domeniului pentru beans cu valori singleton și prototype în Spring și cum influențează comportamentul lor?
sobes.tech AI
Răspuns de la AI
În Spring, domeniul de vizibilitate (scope) al unui bean definește durata de viață și vizibilitatea instanței bean-ului.
-
singleton — acesta este domeniul implicit. De fiecare dată când se solicită un bean cu acest scope, Spring returnează aceeași instanță pe durata întregului ciclu de viață al containerului. Asta înseamnă că bean-ul este creat o singură dată și reutilizat.
-
prototype — la fiecare solicitare, se creează o nouă instanță a bean-ului. Spring nu gestionează ciclul de viață al acestor beans după crearea lor, așa că fiecare apel la
getBeanreturnează un obiect nou.
Impact asupra comportamentului:
- Beans singleton economisesc resurse și asigură o stare comună pentru toți utilizatorii.
- Beans prototype sunt utile atunci când este nevoie de o nouă instanță cu stare independentă pentru fiecare utilizare.
Exemplu:
@Component
@Scope("prototype")
public class MyPrototypeBean {
// fiecare apel la getBean va crea un obiect nou
}
@Component
@Scope("singleton")
public class MySingletonBean {
// un singur obiect pentru întregul container
}
Astfel, alegerea scope-ului influențează modul în care și când sunt create obiectele și cât timp acestea trăiesc în aplicație.