Java lazy init中的类构造函数
我正在使用lazy init=“true”创建一个bean,但我不希望调用类的构造函数。但不知何故,对于lazyint,它也被调用了Java lazy init中的类构造函数,java,spring,Java,Spring,我正在使用lazy init=“true”创建一个bean,但我不希望调用类的构造函数。但不知何故,对于lazyint,它也被调用了 <bean id="abc" class="a.b.c.UtilClass" lazy-init="true" /> 有人能帮我在启动时停止调用类构造函数吗?我希望在需要时调用它。这通常意味着对您的bean有一个依赖关系,该依赖关系也正在被实例化。经典的依赖链是一个必须加载的单例(例如SpringMVC控制器),它引用一个服务bean,然后引用D
<bean id="abc" class="a.b.c.UtilClass" lazy-init="true" />
有人能帮我在启动时停止调用类构造函数吗?我希望在需要时调用它。这通常意味着对您的bean有一个依赖关系,该依赖关系也正在被实例化。经典的依赖链是一个必须加载的单例(例如SpringMVC控制器),它引用一个服务bean,然后引用DAOBean,因此它们都必须被实例化
@Lazy
或Lazy init
bean如果从原型或会话bean中引用,或者从运行时通过对象工厂创建的bean中引用,则更有用
如果不确定依赖链是如何到达bean的,请尝试在构造函数中设置断点。BeanFactory类的调用堆栈中通常有一些resolveDependency()
方法(例如DefaultListableBeanFactory
)。查看其中的beanName
变量值。如果不运行其构造函数,就无法创建bean,这是没有意义的(创建bean==实例化其类的新实例,包括执行其构造函数)。但是,您可以使用单例或任何作用域bean反复重用同一个bean实例。