springboot中只需要有@SpringBootApplication这个注解,有了它马上就能够让整个应⽤跑起来。实际上它只是⼀个组合注
解,@Configuration配置类,@ComponentScan类,包扫描,@EnableAutoConfiguration根据需求⾃动加载相关的bean这三个注解。启动流程如下:
1. 初始化,以及添加到SpringApplication的⾃定义。
2. 发布ApplicationStartedEvent事件,如果想监听ApplicationStartedEvent事件,你可以这样定义:public class
ApplicationStartedListener implements ApplicationListener,然后通过SpringApplication.addListener(..)添加进去即可。
3. 装配参数和环境,确定是web环境还是⾮web环境。
4. 装配完环境后,就触发ApplicationEnvironmentPreparedEvent事件。
5. 如果SpringApplication的showBanner属性被设置为true,则打印启动的Banner。
6. 创建ApplicationContext,会根据是否是web环境,来决定创建什么类型的ApplicationContext。
7. 装配Context的环境变量,注册Initializers、beanNameGenerator等。
8. 发布ApplicationPreparedEvent事件。
9. 注册springApplicationArguments、springBootBanner,加载资源等
10. 遍历调⽤所有SpringApplicationRunListener的contextLoaded()⽅法。
11. 调⽤ApplicationContext的refresh()⽅法,装配context beanfactory等⾮常重要的核⼼组件。
12. 查当前ApplicationContext中是否注册有CommandLineRunner,如果有,则遍历执⾏它们。
13. 发布ApplicationReadyEvent事件,启动完毕,表⽰服务已经可以开始正常提供服务了。通常我们这⾥会监听这个
事件来打印⼀些监控性质的⽇志,表⽰应⽤正常启动了。
SpringApplication是springboot的⼊⼝
SpringApplication是springboot驱动spring应⽤上下⽂的引导类,他的run()⽅法启动Spring应⽤,实质上是为Spring应⽤创建并初始化Spring上下⽂。
执⾏流程
image.png
1. 初始化,以及添加到SpringApplication的⾃定义。
springboot框架的作用
2. 发布ApplicationStartedEvent事件,如果想监听ApplicationStartedEvent事件,你可以这样定义:public class ApplicationStartedListener implements ApplicationListener,然后通过SpringApplication.addListener(..)添加进去即可。
3. 装配参数和环境,确定是web环境还是⾮web环境。
4. 装配完环境后,就触发ApplicationEnvironmentPreparedEvent事件。
5. 如果SpringApplication的showBanner属性被设置为true,则打印启动的Banner。
6. 创建ApplicationContext,会根据是否是web环境,来决定创建什么类型的ApplicationContext。
7. 装配Context的环境变量,注册Initializers、beanNameGenerator等。
8. 发布ApplicationPreparedEvent事件。
9. 注册springApplicationArguments、springBootBanner,加载资源等
10. 遍历调⽤所有SpringApplicationRunListener的contextLoaded()⽅法。
11. 调⽤ApplicationContext的refresh()⽅法,装配context beanfactory等⾮常重要的核⼼组件。
12. 查当前ApplicationContext中是否注册有CommandLineRunner,如果有,则遍历执⾏它们。
13. 发布ApplicationReadyEvent事件,启动完毕,表⽰服务已经可以开始正常提供服务了。通常我们这⾥会监听这个事件来打印⼀些监控性质的⽇志,表⽰应⽤正常启动了。
SpringBoot会触发其他的⼀些事件,这些事件按下列顺序触发:
(1)ApplicationStartingEvent:项⽬刚启动时触发,此时除了注册和初始器之外,其他所有处理都没有开始;
(2)ApplicationEnvironmentPreparedEvent:上下⽂得到环境信息之后触发,此时上下⽂创建还没有创建;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。