1 bean的创建+初始化流程总结
在上篇文章《【bean的生命周期】— 对象创建+初始化流程分析 — 【重点@Autowired的作用时机】》中介绍了单实例bean的创建+初始化流程,这里对其进一步总结如下:
2 关键方法执行顺序总结
由1可知在IOC容器启动 —> 业务bean的创建+初始化过程中构造方法、@Autowired、BeanPostProcessor、InitializingBean等的执行顺序为:
(1) 最先执行构造方法 —> 对应于对象的创建,此时也可能会向bean里设置(
设置并非注入
)一些属性,比如通过@Bean向IOC容器里注入如下对象时:
@Bean(name = "cat")
public Cat buildCat() {
Cat cat = new Cat();
cat.setName("花花"); //为bean设置一些属性
return cat;
}
(2)接着会将所有标有@Autowired的属性全部注入到当前bean
(3)遍历所有的BeanPostProcessor,并调用每一个processor的postProcessBeforeInitialization方法
(4)执行InitializingBean、initMethod或@PostConstruct对应的方法 — 《【spring】详解InitializingBean、initMethod和@PostConstruct》
(5)遍历所有的BeanPostProcessor,并调用每一个processor的postProcessAfterInitialization方法