Middle
Mi történik, ha megpróbálod ugyanazt a bean-t lekérni az ApplicationContext-ben?
sobes.tech MI
Válasz az MI-től
ApplicationContext alapértelmezés szerint ugyanarra a példányra mutató hivatkozást ad vissza, mivel a Springben az összes bean alapértelmezett láthatósági területe a singleton.
Ha a bean más láthatósági területtel van konfigurálva, például prototype, akkor minden kérésnél az ApplicationContext új példányt hoz létre és ad vissza.
Példa egy prototype láthatósági területtel rendelkező bean konfigurációjára:
@Configuration
public class AppConfig {
@Bean
@Scope("prototype") // Megadjuk a `prototype` láthatósági területet
public MyPrototypeBean myPrototypeBean() {
return new MyPrototypeBean();
}
}
Példa bean lekérésére az ApplicationContext-ből:
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 esetén true, prototype esetén false
context.close();
}
}