Если в 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")publicclassAppConfig {@BeanpublicRegion getRegion(){returnnewRegion();}@BeanpublicCountry getCountry(){returnnewCountry();}}
Можно также использовать в классе конфигурации для отдельного бина:@Configuration@ComponentScan(basePackages ="my.app")publicclassAppConfig {@Bean@Lazy(true)publicRegion getRegion(){returnnewRegion();}
}
А также при внедрении совместно с @Autowired или @Inject: @Lazy(true) @Autowired private City city;
Комментариев нет:
Отправить комментарий