文章字数:455,阅读全文大约需要1分钟
SpringBean从创建、初始化操作、就绪、销毁。组成了一个完整的生命周期。
大致流程
普通的容器和
spring
的耦合很低,使用过程中不用知道spring
的存在,将容器从spring
替换成其他容器也可以正常运行。然而部分功能需要用到容器本身的功能和资源,于是spring
提供了spring aware
系列可以在初始化容器时通过接口的形式提供。
- 实例化
- 填充属性
- 调用
BeanNameAware
的setBeanName
方法
如果Bean
实现此接口,调用setBeanName
方法并传入Bean
的id
- 调用
BeanFactoryAware
的setBeanFactory
方法
如果Bean
实现此接口,调用方法传入Spring
工厂本身 - 调用
ApplicationContextAware
的setApplicationContext
方法
如果Bean
实现此接口,调用方法传入ApplicationContext
,即spring
容器上下文 - 调用
BeanPostProcess
的postProssBeforeInitialization
方法
如果Bean
实现此接口,调用方法传入(Object bean,String beanName)
这个方法是在初始化结束时调用,所以通常应用于内存或缓存技术
初始化结束
如果
bean
在Spring
配置文件中配置了init-method
属性,会自动调用配置的初始化方法调用
InitializingBean
的afterPropertiesSet
方法调用
BeanPostProcess
的postProcessAfterInitialization
方法
如果Bean
实现此接口,调用方法传入(Object bean,String beanName)
初始化之后调用的方法Bean
准备就绪
销毁
- 调用
DispostbleBean
的destory
方法
在清理阶段,实现此方法的Bean
会调用destory
方法销毁 - 调用指定的销毁方法
如果在配置文件指定destory-method
方法,会自动销毁