spring对bean的初始化其实是有条件的。
首先判断是单例还是多例,如果是多例的情况下,肯定是在你第一次使用该bean的时候初始化无疑。
但是如果是单例的情况下又分为两种情况:
- 一是当你
lazy-init
懒加载设置为true
时是在你第一次使用的时候实例化;第一次使用包括的范围是此对象被其它bean
引用也算第一次使用,所以即使你设置lazy-init为ture
只要你的此bean被引用或者注入也会被初始化。 - 二是
lazy-init懒加载为false
时(这也是spring默认值)是在spring容器启动时进行实例化。
总结
容器启动过程中会实例化的bean只有满足以下三个条件的bean:
- 非抽象的
- 单例的
- 非懒加载的