Junior — Middle
Springде бир компонентти бир убакта синглтон жана прототип катары иштетүү мүмкүнбү жана муну кантип жасоого болот?
sobes.tech AI
AIден жооп
Springде, алдын ала орнатылғандай, биндер singleton же prototype болушу мүмкүн, бирок бир эле учурда бинде жана singleton жана prototype деп жарыялай албайсыз.
Бирок, ички жактан жаңы prototype үлгүлөрүн түзө турган singleton бинде ишке ашыруу мүмкүн.
Муну кантип жасоого болот:
- Биринчи, singleton бини аныктаңыз (өзүнчө).
- Prototype бини аныктаңыз.
- Singleton бине
ObjectProviderжеApplicationContextаркылуу жаңы prototype үлгүлөрүн алуу үчүн инжекторлоо.
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("Прототип үлгүсү: " + this);
}
}
Бул ыкма менен, singleton бине ар бир чакырууда жаңы прототип үлгүлөрүн түзүп, колдонууга болот.