Junior — Middle
Spring-də həm singleton, həm də prototip kimi davranan bir komponenti həyata keçirmək mümkündürmü və bunu necə etmək olar?
sobes.tech Süni İntellekt
AI-dan cavab
Spring-də, varsayılan olaraq, bean'lər singleton və ya prototip ola bilər, amma eyni zamanda həm singleton, həm də prototip kimi elan etmək mümkün deyil.
Ancaq, içində yeni prototip nümunələri yaradan singleton bean-i həyata keçirmək mümkündür.
Bunu necə etmək olar:
- Singleton bean-i təyin edin (varsayılan).
- Prototip bean-i təyin edin.
- Singleton bean-ə, ehtiyac olduqda yeni prototip nümunələri almaq üçün
ObjectProvidervə yaApplicationContext-i enjekte edin.
ObjectProvider ilə nümunə:
@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("Prototip nümunəsi: " + this);
}
}
Beləliklə, singleton bean hər çağırışda yeni prototip nümunələri yarada və istifadə edə bilər.