4.Spring中IOC创建对象的两种方式和创建时机
https://blog.csdn.net/jike11231/article/details/116357864
创建时机
1:默认的在Spring容器启动的时候
2:在getBean的时候创建对象(就是拿到配置文件中的标识符的时候创建对象)
在Spring的配置文件bean中有一个属性lazy-init=“default/true/false”
(1)如果lazy-init为"default/false"在启动spring容器时创建对象
(2)如果lazy-init为"true",在context.getBean时才要创建对象
意义:
(1)在启动spring容器的时候,检查spring容器配置文件的正确性,如果spring容器不能正常启动,整个tomcat就不能正常启动。但是这样的缺点是把一些bean过早的放在了内存中,如果有数据,则对内存来是一个消耗,但是可以过早发现错误。
(2)getBean时创建对象可以减少内存的消耗,但是不容易发现错误。
注意:
如果一个bean的scope属性为scope="pototype"时,即使设置了lazy-init=“false”,容器启动时不实例化bean,而是调用getBean方法是实例化的。