Spring Bean生命周期
一、Bean对象实例化
-
调用有参构造函数
使用构造注入 -
调用无参构造函数
使用设值注入
二、对象初始化
- 检查Aware接口 , 调用bean实现的相关方法。通过此接口可以让类感知到spring的某些属性
常用的接口有:
接口名称 | 作用 |
---|---|
ApplicationContextAware | 获取spring 上下文环境的对象 |
BeanNameAware | 获取该bean在BeanFactory配置中的名字 |
ServletContextAware | 获取servletContext容器 |
BeanFactoryAware | 创建它的BeanFactory实例 |
ResourceLoaderAware | 获取ResourceLoader对象,通过它获得各种资源 |
- 检查配置文件中是否存在已注册的bean,实现了BeanPostProcessor接口,调用其前置方法,执行相应逻辑:
方法名 | 作用 |
---|---|
postProcessBeforeInitialization | 实例化、依赖注入完毕,在调用显示的初始化之前完成一些定制的初始化任务 |
- 检查初始化(InitializingBean)接口,调用方法afterPropertiesSet()方法
方法名 | 作用 |
---|---|
afterPropertiesSet | 执行Bean初始化逻辑 |
-
检查配置文件中,bean标签的init-method属性,该属性值是类中的自定义的初始化方法,在该方法中执行初始化逻辑。
-
检查配置文件中是否存在已注册的bean,实现了BeanPostProcessor接口,调用其后置方法,执行相应逻辑:
方法名 | 作用 |
---|---|
postProcessAfterInitialization | 实例化、依赖注入、初始化完毕时执行 |
三、销毁
- 检查DisposableBean接口,调用其销毁方法,执行相应销毁逻辑
方法名 | 作用 |
---|---|
destroy | 多例对象被jvm垃圾回收时、单例工厂销毁时调用 |
- 检查配置文件中,bean标签的destroy-method属性,该属性值是类中的自定义的销毁方法,在该方法中执行销毁逻辑。