Junior — Middle
Spring компонентін бір уақытта singleton және prototype ретінде қалай жүзеге асыруға болады, және оны қалай жасауға болады?
sobes.tech AI
AI-дан жауап
Spring-да әдепкі бойынша, биндер біріншіден, синглтон немесе прототип ретінде болады, бірақ бір уақытта бин мен синглтонды және прототипті жариялауға болмайды.
Алайда, ішінен жаңа прототип мысалдарын сұрау бойынша жасайтын синглтон бинін жүзеге асыруға болады.
Оны қалай жасауға болады:
- Синглтон бинін анықтау (әдепкі бойынша).
- Прототип бинін анықтау.
- Синглтон-бинде
ObjectProviderнемесеApplicationContextенгізу арқылы прототиптың жаңа мысалдарын талап бойынша алу.
ObjectProvider қолданатын мысал:
@Component
@Scope("singleton")
public class SingletonBean {
private final ObjectProvider<PrototypeBean> prototypeBeanProvider;
public SingletonBean(ObjectProvider<PrototypeBean> prototypeBeanProvider) {
this.prototypeBeanProvider = prototypeBeanProvider;
}
public void usePrototype() {
PrototypeBean prototype = prototypeBeanProvider.getObject();
prototype.doSomething();
}
}
@Component
@Scope("prototype")
public class PrototypeBean {
public void doSomething() {
System.out.println("Prototype мысалы: " + this);
}
}
Осылайша, синглтон-бин әр шақыру кезінде жаңа прототип мысалдарын құрып, пайдалана алады.