1.IOC:控制反转
SpringIOC:把对象的创建、初始化、销毁等工作交给Spring容器,由Spring容器控制对象生命周期
2.Spring创建对象的方式
(1).默认构造函数
(2).静态工厂方法
1).提供静态工厂类
2).在Spring配置文件中提供工厂方法
3).实例工厂方法
3.Spring创建对象的模式
(1).默认是单例模式 ==> “singleton”
(2).
<bean id="hello" class="domain.Hello" scope="prototype"></bean>
将scope值写成prototype则为原型模式,即多例
注:因为默认是单例,所以list一般不在bean中声明,一般放在方法中,不然就是共享数据了。
4.Spring是什么时候创建对象的?
(1).默认情况,启动就创建对象
有利于开发:Spring启动时,若配置文件有错会报错
(2).延迟加载
<bean id="hello" class="domain.Hello" lazy-init="true"></bean>
lazy-init的值可以是true|false|default,false和default都表示不延迟加载
使用场景:一个bean中有大量数据,需要懒加载
5.Spring对对象的初始化和销毁(前提条件:单例)
<bean id="hello" class="domain.Hello" init-method="init" destroy-method="destroy"></bean>
(1).在bean中提供init-method和destroy-method方法。所有的初始化和销毁都是由Spring容器自动执行
(2).若Spring的bean是在多例的情况下,则Spring不负责销毁,程序员手动设置为Null
(3).若Spring的bean是多例,不管lazy-init是什么值,均不存在懒加载,而只有在context.getBean()时才创建对象