Sobes.tech
Junior — Middle

Jei dvi klasės kreipiasi į tą pačią „bean“ egzempliorių, ar bus sukurta tik viena egzempliorius, ar kiekviena klasė gaus atskirą?

sobes.tech AI

Atsakymas iš AI

В Spring Framework по умолчанию бины являются синглтонами в пределах контейнера. Это значит, что если два класса обращаются к одному и тому же бину, они получают ссылку на один и тот же экземпляр.

Пример:

@Component
public class MyBean {
    // какие-то поля и методы
}

@Component
public class ClassA {
    private final MyBean myBean;
    
    public ClassA(MyBean myBean) {
        this.myBean = myBean;
    }
}

@Component
public class ClassB {
    private final MyBean myBean;
    
    public ClassB(MyBean myBean) {
        this.myBean = myBean;
    }
}

В этом примере и ClassA, и ClassB получат один и тот же экземпляр MyBean.

Если требуется, чтобы каждый класс получал отдельный экземпляр, нужно изменить область видимости бина, например, на prototype.