文章字数: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方法,会自动销毁