spring boot启动流程

入口是一个main方法,这个main方法里面new一个SpringApplication对象,传入bean源,就是注解了SpringBootApplication 的那个类,调用run方法。
spring boot启动流程分为两部分 一部分是准备阶段,一部分是运行阶段
准备阶段主要有这么几步:
1、配置bean的源,就是bean的来源,就是注解了SpringBootApplication的那个类。
2、推断,推断应用类型,有webflux,webservlet,none
推断主类,这个是通过线程堆栈实现,构造一个运行时异常,找异常堆栈里面找mian所在的那个类。
3、加载上下文初始化器 在这里可以调整applicationcontext
4、加载应用事件监听器 这两个东西都是在mete-info/spring.factories文件里面。

运行阶段,就是调用run方法
先是加载SpringApplication运行时监听器,SpringApplicationRunListeners,默认只有一个EventPublishingRunListener,需要传入准备阶段加载的listeners,在这个地方调用一个广播器广播事件。
然后会根据推断类型,创建一个ApplicationContext,ConfigurableApplicationContext
对这个context初始化,refresh方法
最后会返回这个context。

自动装配:
1、激活自动配置, EnableAutoConfiguration
2、实现自动配置(注解装配,模式装配,条件装配)配置bean
3、将这个配置配置到spring.factories文件里面去

你可能感兴趣的:(spring boot启动流程)