Spring default-lazy-init似乎不起作用,我看到单例实例的预实例化

时间:2014-03-02 19:27:41

标签: java spring lazy-initialization

我在beans标签内的spring上下文文件中定义了default-lazy-init =“true”但是当我启动tomcat时,我看到我的bean正在实例化。这是它在日志中显示的内容 -

org.springframework.beans.factory.support.DefaultListableBeanFactory(DefaultListableBeanFactory.java:555) - 在org.springframework.beans.factory.support.DefaultListableBeanFactory@ac6fb1中预先实例化单例:定义bean [dataSource,我的其他bean应用.......

我错过了什么吗?

1 个答案:

答案 0 :(得分:4)

即使bean被声明为延迟初始化,如果另一个bean依赖它,它仍将被初始化。

我将从您的日志中假设有问题的bean是dataSource。我还假设您有其他依赖dataSource的bean(否则它不会非常有用)。如果上下文初始化其他bean并发现它,例如,它需要自动装配dataSource bean,则必须首先初始化它。

如果您想要完全延迟初始化,则必须使某些对象图中的每个bean都被懒惰地初始化。