Если в Spring бин аннотирован как @Lazy(true), то он будет создан только при первом обращении к нему:
@ComponentСоответственно при @Lazy(false) бин создается сразу при старте приложения (режим по-умолчанию в Spring) - кстати для сравнения - аналогично работает аннотация @Startup для синглтонов EJB стека JavaEE. По умолчанию Spring создает все бины при старте приложения, т е работает режим @Lazy(false) - а вот в CDI и EJB из стека JavaEE все наоборот - там бины создаются лениво при первом обращении к ним. Если c помощью @Lazy аннотирован класс конфигурации Spring - то это будет работать для всех методов отмеченных аннотацией @Bean:
@Lazy(true)
public class MyBean {
.........
}
@Lazy(true)
@Configuration
@ComponentScan
(basePackages =
"my.app"
)
public
class
AppConfig {
@Bean
public
Region getRegion(){
return
new
Region();
}
@Bean
public
Country getCountry(){
return
new
Country();
}
}
Можно также использовать в классе конфигурации для отдельного бина:
@Configuration
@ComponentScan
(basePackages =
"my.app"
)
public
class
AppConfig {
@Bean
@Lazy(true)
public
Region getRegion(){
return
new
Region();
}
}
А также при внедрении совместно с @Autowired или @Inject:
@Lazy(true)
@Autowired
private
City city;
Комментариев нет:
Отправить комментарий