Sobes.tech
Junior — Middle

Springде бир компонентти бир убакта синглтон жана прототип катары иштетүү мүмкүнбү жана муну кантип жасоого болот?

sobes.tech AI

AIден жооп

Springде, алдын ала орнатылғандай, биндер singleton же prototype болушу мүмкүн, бирок бир эле учурда бинде жана singleton жана prototype деп жарыялай албайсыз.

Бирок, ички жактан жаңы prototype үлгүлөрүн түзө турган singleton бинде ишке ашыруу мүмкүн.

Муну кантип жасоого болот:

  1. Биринчи, singleton бини аныктаңыз (өзүнчө).
  2. Prototype бини аныктаңыз.
  3. 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 бине ар бир чакырууда жаңы прототип үлгүлөрүн түзүп, колдонууга болот.