SpringBean的生命周期
一、传统 Bean 的生命周期
new实例化;
可使用了
无引用时,GC回收。
二、Servlet 的生命周期
实例化Servlet对象;
init初始化对象;
相应客户端请求service()(doGet()与doPost());
destroy()终止/销毁。
三、Spring Bean的生命周期
1、实例化对象;
2、填充属性值及引用;
3、调用 BeanNameAware 的 setBeanName(String name) 设置 bean 的 id;
4、调用 BeanFactoryAware 的 setBeanFactory(BeanFactory beanFactory) 设置 BeanFactory Bean工厂;
5、同上:ApplicationContextAwaresetApplicationContext(ApplicationContext applicationContext);
6、如果实现 BeanPostProcessor,则 调用 postProcessBeforeInitialization() 初始化前的后置处理方法
7、如果实现了 InitializingBean 接口,则使用 afterPropertiesSet() 来初始化属性
8、如果实现 BeanPostProcessor,则 调用 postProcessAfterInitialization() 初始化后的后置处理方法
9、此时,bean 就可以使用了
10、DisposableBean接口 destroy() 销毁bean。不过在Spring5.0开始,DisposableBean.destroy() 已经是过时的方法了,可直接使用 close()。