问题:描述一下 bean 的生命周期?
背图:必须记住图中的流程
在表述的时候不要只说图中有的关键点,要学会扩展描述
1、实例化 bean :反射的方式生成对象
2、填充 bean 的属性: populateBean ().循环依赖的问题(三级缓存)
3调用 aware 接口相关的方法: invokeAwareMethod (完成 BeanName , BeanFactory . BeanClassLoader 对象的属性设置)4、调用 BeanPostProcessor 中的前置处理方法:使用比较多的有( ApplicationContextPostProcessor .设置
ApplicationContext , Environment , ResourceLoader , EmbeddValueResolver 等对象)
5、调用 initmethod 方法: invokelnitmethod ().判断是否实现了 initializingBean 接口,如果有,调用 afterPropertiesSet 方法,没有就不调用
6、调用 BeanPostProcessor 的后置处理方法: spring 的 aop 就是在此处实现的, AbstractAutoProxyCreator
注册 Destuction 相关的回调接口:钩子函数
7、获取到完整的对象,可以通过 getBean 的方式来进行对象的获取
8、销毁流程,1;判断是否实现了 DispoableBean 接口,2,调用 destroyMethod 方法