前言
笔者把之前的Spring的格式重新排版,并且细致到一行一个讲解,希望大家喜欢。
大家使用Spring Boot这么久了,有没有知道Spring Boot的启动流程是怎样的呢?Spring是如何扫描到使用@Component的类并且把它放进BeanFactory呢?它是如何启动的呢?现在我们就一起看看。本系列会分几个章节去讲述这个Spring Boot的启动过程。由于写这篇文章的时候,在很多环境写过,所以可能由于Spring Boot版本不同代码也不同,但是思路是一样的。
1.创建SpringApplication对象
1 | java复制代码// 1.main方法 |
2.在SpringApplication对象调用run()
1 | java复制代码/** |
3.核心方法refreshContext
1 | java复制代码/** |
创建Bean实例
1 | java复制代码/** |
关于ApplicationContext
实现ApplicationContextAware接口会调用setApplicationContext方法,而ApplicationContextAwareProcessor又是实现BeanPostProcessor,而ApplicationContextAwareProcessor又被Spring强制注册,所以说如果一个Bean实现ApplicationContextAware和BeanPostProcessor,在先初始化有关于BeanPostProcessor的Bean时候会创建这个Bean创建这个Bean的时候又会调用setApplicationContext方法调用完之后最后才会调用BeanPostProcessor实现的方法,其实听拗口的,所以最后还是希望自己能Debug一下
bean生命周期流程图
小结
当我重新重构这篇文章的时候,其实是因为我自己都读不懂之前的文章,希望这章大家可以看得懂。大家读不懂肯定是说明我的文采还不够好,也希望大家多多指出笔者的错误。
说到Spring其实在座的各位都是Spring工程师,老搬砖奴,但是大家肯定也因为忙没时间去研究整个Spring的流程。这里笔者帮大家都全部准备好了。
本文转载自: 掘金