参考图片:
面试官:Spring的bean的生命周期
候选人:
从BeanDefinition中获取bean的定义信息。
1.调用构造函数实例化bean
2.bean的依赖注入和属性赋值
3.初始化bean
3.1初始化之前的工作
处理Aware接口,设置相关依赖
BeanPostProcessor前置处理
3.2初始化bean
调用bean的初始化方法
这个初始化方法可以是处理InitializingBean接口,调用他的接口方法
也可以是XML 配置文件init-method这个属性指定的方法
或@PostContruct注解标注的方法
3.3初始化后
BeanPostProcessor后置处理,主要是对bean进行增强,有可能在这里产生代理对象
4.使用bean
5.销毁bean
补充:
Aware相关的接口包括:BeanNameAware、BeanClassLoaderAware、BeanFactoryAware
①当Bean实现了BeanNameAware,Spring会将Bean的名字传递给Bean。
②当Bean实现了BeanClassLoaderAware,Spring会将加载该Bean的类加载器传递给Bean。
③当Bean实现了BeanFactoryAware,Spring会将Bean工厂对象传递给Bean。