【bean的生命周期】--- 构造方法、@Autowired、BeanPostProcessor、InitializingBean等的执行顺序解析

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方法

发布了189 篇原创文章 · 获赞 187 · 访问量 39万+

猜你喜欢

转载自blog.csdn.net/nrsc272420199/article/details/103204119
今日推荐