Sobes.tech
Middle
88
questionbank

Что произойдет, если в ApplicationContext попытаться получить один и тот же бин?

Ответ от нейросети

sobes.tech AI

ApplicationContext вернет ссылку на один и тот же экземпляр бина по умолчанию, так как областью видимости бинов по умолчанию в Spring является singleton.

В случае, если бин сконфигурирован с другой областью видимости, например prototype, то при каждом запросе ApplicationContext будет создавать и возвращать новый экземпляр бина.

Пример конфигурации бина с областью видимости prototype:

@Configuration
public class AppConfig {

    @Bean
    @Scope("prototype") // Указываем область видимости prototype
    public MyPrototypeBean myPrototypeBean() {
        return new MyPrototypeBean();
    }
}

Пример получения бина из ApplicationContext:

public class Main {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);

        MyPrototypeBean bean1 = context.getBean(MyPrototypeBean.class);
        MyPrototypeBean bean2 = context.getBean(MyPrototypeBean.class);

        System.out.println(bean1 == bean2); // Для singleton вернет true, для prototype вернет false

        context.close();
    }
}