Spring Bean的生命周期是Spring中面试频率相当高的面试题,如果了解bean的生命周期对于Spring的扩展和运行流程可以掌握的很好,这个问题主要考察开发人员对执行的流程和以及有哪些扩展点,对我们写代码也会有很多帮助。个人整理归纳答案如下
- 解析类得到BeanDefintion
- 如果有当前类有多个构造方法,则要推断构造方法
- 确定好构造方法后,进行实例化得到一个对象
- 对对象中的加了@Autowired (@Inject @Resource等)注解的属性进行属性填充
- 回调Aware方法,比如BeanNameAware,BeanFactoryAware
- 调用BeanPostProcessor 的初始化前方法
- 调用初始化方法(实现了InitializingBean接口)
- 调用BeanPostProcessor 的初始化后的方法,在这里会进行AOP
- 如果当前创建的bean是单例的,则会把bean放入单例池
- 使用bean
- Spring容器关闭时调用destory() 方法(实现了DisposableBean)
后续完善代码和流程图。。。