lazy-init中的类构造函数

时间:2018-03-30 12:10:48

标签: java spring

我正在使用lazy-init =“true”创建一个bean,但我不希望调用类的构造函数。但不管怎么说,lazy-init也被调用了。

<bean id="abc" class="a.b.c.UtilClass" lazy-init="true" />

任何人都可以帮我停止在启动时调用类构造函数吗?我想要在需要时调用它。

1 个答案:

答案 0 :(得分:1)

这通常意味着对您的bean的依赖性也在被实例化。经典的依赖链是一个必须加载的单例(例如一个Spring MVC控制器),它引用一个服务bean,然后引用DAO bean,所以它们都必须被实例化。

如果从原型或会话bean引用它们,或者从运行时通过@Lazy创建的bean,

lazy-initObjectFactory bean会更有用。

如果对依赖链如何到达bean有疑问,请尝试在构造函数中添加断点。 BeanFactory类中的调用堆栈中通常有一些resolveDependency()方法(例如DefaultListableBeanFactory)。在那里查看beanName变量值等。