如何理解 bean 初始化部分的生命周期
bean 对象创建完成只会,会进行属性赋值、组件依赖注入,以及初始化阶段的方法回调。在 populateBean
属性赋值阶段,会事先收集好 bean 中标注了依赖注入注解的(@Autowired
、@Value
、@Resource
、@Inject
)bean,之后在借助后置处理器,回调 postProcessorProperties
方法实现依赖注入。
属性赋值和依赖注入之后,会回调执行 bean 的初始化方法,以及后置处理器的逻辑:首先会执行 Aware
相关的回调注入,之后执行后置处理器的前置回调,在后置处理器的前置方法中,会回调 bean 中标注了 @PostConstruct
注解的方法,所有的后置处理器前置方法回调后,会执行 InitializingBean
的 afterPropertiesSet
方法,随后是 init-method
指定的方法,等这些 bean 的初始化方法都回调完毕后,最后执行后置处理器的后置回调。
全部的 bean 初始化结束后,ApplicationContext
的 start
方法触发时,会触发实现了 Lifecycle
接口的 bean 执行 start
方法