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 {
...
}