Sobes.tech
Back to questions
Junior — Middle
62

Если два класса обращаются к одному и тому же экземпляру бина, создастся ли при этом два отдельных объекта?

Answer from AI

sobes.tech AI

Если два класса обращаются к одному и тому же экземпляру бина в контексте, например, Spring Framework, то создаётся один и тот же объект (один экземпляр бина), а не два отдельных. Это связано с тем, что по умолчанию бины в Spring имеют скоуп singleton, то есть один экземпляр на весь контекст приложения.

Пример:

@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), тогда при каждом запросе создаётся новый объект.