单例对象的生命周期和多例对象的生命周期不一样。
单例对象:
单例对象:单例对象的生命周期与容器的生命周期相同。
出生:读取完配置文件,即创建容器,只要容器一创建,就马上创建对象。
活着:只要容器还在,对象一直活着
死亡:容器销毁,则对象消亡
现在来测试一下,在类中添加两个方法:
注意:此时是单例对象。
结果为:
只要执行完第一行代码,就立即创建和初始化对象。当关闭容器时,对象就销毁了。
如果是多例对象,即使关闭了容器,对象也没有销毁。
多例对象:
结果:
发现只有在使用(获取)的时候才会初始化,这与刚才采用BeanFactory时看到的现象是一样的,如果改成singleton,只要读取完配置文件,马上就初始化对象了。
Spring是非常智能的框架,它可以感知到对象的作用范围是单例还是多例,从而来选择什么时候创建对象,即对象创建的时机是立即还是延迟,单例对象就是立即,多例对象就是延迟。
借助bean标签的两个属性init-method和destroy-method
多例对象:(仅作了解)
出生:当我们使用(获取)对象时,spring框架为我们创建和初始化对象
活着:对象只要是在使用过程中就一直活着
死亡:当对象长时间不用,且没有别的对象引用时,由java的垃圾回收器回收。
Spring不负责多例对象的销毁。