Spring bean的生命周期总结

项目路径:https://gitee.com/wuhan1/spring-parent.git 下的spring-09
bean的行为模式分两种:
单例模式:由ioc容器负责,只创建一次,可以设置延迟加载,默认就是单例模式
非单例模式:spring ioc容器不负责此种模式的生命周期,只负责创建初始化,每次使用时都会创建新的

xml方式加载

bean生命周期最简单的一种情况:
实例化——》设置属性——》使用

复杂的情况(实际可能只会用到其中的几步):
1.实例化
2.设置属性
3.如果实现了BeanNameAware接口(bean名字关注接口),则可以获取正在实例化的bean的名字(bean id)
4.如果实现了BeanFactoryAware接口(bean 工厂关注接口),则可以获取bean工厂
5.如果实现了ApplicationContextAware接口,可以获取上下文对象
6.如果bean和后置处理器关联,则会自动调用postProcessBeforeInitialization和postProcessAfterInitialization的方法
7.如果实现了InitializingBean接口,则会调用afterPropertiesSet方法
8.如果在配置文件中定义了自己的初始化方法,则会执行该方法
9.如果实现了DisposableBean接口,则关闭容器时会自动调用接口的destroy方法
10.如果在配置文件中定义了自己的销毁方法,则关闭容器时会调用该方法


流程的执行结果

以上是通过ApplicationContext方式获取到的bean的生命周期

而通过BeanFactory获取到的bean对象,bean的声明周期相对会少一些

打印结果

少了ApplicationContext里面的第5和第6步,所以两者是不一样的。

bean的生命周期开始的时间:被载入容器中的时候,第一个过程就是实例化
bean一般在什么时候实例化:程序加载配置文件的时候,把bean加载到内存中,可以证明bean在这个时候实例化的,默认会调用无参的构造函数


 

猜你喜欢

转载自blog.csdn.net/dhj199181/article/details/108697867