Lazy-initialized beans延迟初始化
ApplicationContext默认会实例化singleton的bean,如果想延迟初始化它则在bean标签中用lazy-init="true"同时也可以在beans标签中指定default-lazy-init="true"来将所有的延迟初始化:
Spring3官方配置:
- <bean id="lazy" class="com.foo.ExpensiveToCreateBean" lazy-init="true"/><!--延迟... -->
- <bean name="not.lazy" class="com.foo.AnotherBean"/><!--不延迟... -->
- <beans default-lazy-init="true">
- <!--延迟所有... -->
- </beans>
但是,如果将一个已经设置 lazy-init="true"的bean注入到另一个没有设置延迟的bean中的,那么前者的 lazy-init="true"是无效的,它也将初始化。
如果是用注解,很简单:
- @Component
- @Lazy(true)//
- public class UserAnnotation {
- ...
- }