Middle
148
Que se passe-t-il si vous essayez d'obtenir le même bean dans ApplicationContext?
Réponse de l'IA
sobes.tech IA
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();
}
}