2012-03-18 111 views
0

我正在学习春天,我有一个关于豆工厂preInstantiateSingletons方法的问题。如果你不调用这个方法,那么Spring如何延迟加载单例?我正在阅读Pro Spring 2.5并使用XmlBeanFactory。我认为Spring在你调用构造函数的地方创建了整个对象图。春天和prestantiateSingletons

是的,我知道它已经过时......

回答

2

在哪些方面春天延迟加载单身,如果你不调用这个方法?

默认情况下Spring有渴望豆初始化的行为,但如果你标记豆受lazy-init="true"懒洋洋地初始化或可能与注释Spring上下文同时加载上下文不会创建一个bean的实例,它会创建当我们实际需要它的时候(当我们试图从上下文中提取这个bean,或者当这个bean被标记为依赖于其他bean并且这个bean正在初始化时)

要测试和验证这个,你可以创建一个bean并将其标记为延迟初始化,并将另一个bean不进行延迟初始化(默认为eager),将log语句放在它们的构造函数中,BeanEager的构造函数只要co ntextt被加载,但BeanLazy的构造函数只会在您尝试执行时调用从上下文中获取该bean