Sobes.tech
Junior — Middle

Spring компонентін бір уақытта singleton және prototype ретінде қалай жүзеге асыруға болады, және оны қалай жасауға болады?

sobes.tech AI

AI-дан жауап

Spring-да әдепкі бойынша, биндер біріншіден, синглтон немесе прототип ретінде болады, бірақ бір уақытта бин мен синглтонды және прототипті жариялауға болмайды.

Алайда, ішінен жаңа прототип мысалдарын сұрау бойынша жасайтын синглтон бинін жүзеге асыруға болады.

Оны қалай жасауға болады:

  1. Синглтон бинін анықтау (әдепкі бойынша).
  2. Прототип бинін анықтау.
  3. Синглтон-бинде 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);
    }
}

Осылайша, синглтон-бин әр шақыру кезінде жаңа прототип мысалдарын құрып, пайдалана алады.