Spring Boot的启动流程

1、 如果我们使用的是SpringApplication的静态run方法,在SpringApplication执行初始化

    1.判断webApplicationType类型  REACTIVE  SERVLET  NONE
    2.使用SpringFactoriesLoader在应用的classpath下的META-INF/spring.factories中加载所有ApplicationContextInitializer。
    3.使用SpringFactoriesLoader在应用的classpath下的META-INF/spring.factories中加载所有ApplicationListener。


2、 开始执行run方法首先遍历执行所有通过SpringFactoriesLoader可以查找到并加载的SpringApplicationRunListener。调用它们的started()方法。

3、 创建并配置当前Spring Boot应用使用的prepareEnvironment

4、 遍历调用所有SpringApplicationRunListener的environmentPrepared()的方法,其中加载application.yaml文件就在这里。

5、 打印banner。

6、 根据实际环境创建的ApplicationContext。

7、 创建异常报告exceptionReporters

8、 执行prepareContext方法,对容器做一些相关设置。

9、 核心prepareContext,此布为@EnableAutoConfiguration自动化配置的关键,注册的关键。
    
    1.准备此上下文以进行刷新 prepareRefresh();

	2.告诉子类刷新内部bean工厂。ConfigurableListableBeanFactory beanFactory = getFreshBeanFactory();

	3.准备在此上下文中使用的bean工厂。prepareBeanFactory(beanFactory);

	4.允许在上下文子类中对bean工厂进行后处理。postProcessBeanFactory(beanFactory);

	5.调用在上下文中注册为bean的工厂处理器。invokeBeanFactoryPostProcessors(beanFactory);

	6.注册拦截Bean创建的Bean处理器。registerBeanPostProcessors(beanFactory);

	7.为此上下文初始化消息源。initMessageSource();

	8.为此上下文初始化事件多播器。initApplicationEventMulticaster();

	9.在特定上下文子类中初始化其他特殊bean。onRefresh();

	10.检查侦听器bean并注册它们。registerListeners();

	11.实例化所有剩余的(非延迟初始化)单例。finishBeanFactoryInitialization(beanFactory);

	12.最后一步:发布相应的事件。finishRefresh()之后创建web服务器如:Tomcat;

10、 afterRefresh 查找当前ApplicationContext中是否注册有,ApplicationRunner,CommandLineRunner,则遍历执行它们。

11、 执行 listeners的started,running方法;

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值