SpringBoot——run启动流程
2017-10-18 11:14
666 查看
SpringBoot_run()启动流程
SpringApplication实例初始化:a)、根据classpath里面是否存在特征类(org.springframework.web.context.ConfigurableWebApplicationCobtext)来决定创建为web应用使用ApplicationContext类型,还是标准Standalone应用使用的ApplicationContext类型。
b)、使用SpringFactoriesLoader在classpath中查找并加载所有可用的ApplicationContextInitiazier
c)、使用SpringFactoriesLoader在classpath中查找并加载所有可用的ApplicationListener
d)、推断并main方法的定义类
SpringApplication实例初始化完成,遍历SpringFactoriesLoader可以找到并加载的SpringApplicationRunListnner,调用他们的start()方法。
创建并配置当前SpringBoot应用将要使用的Envrioment(包括配置要使用的PropertySource以及Profile)
遍历调用所有SpringApplicationRunListener的environmentPrepared()的方法——即通知【run监听器SpringBoot应用的使用环境已经搭建完成】
创建对应类型的ApplicationContext,根据条件决定是否添加ShutdownHook,决定是否使用自定义的BeanNameGenerator、ResourceLoader。将之前准备好的Enviroment设置给创建好的ApplicationContext使用
完成创建ApplicationContext,通过SpringFactoriesLoader查找并加载classpath中所有可用的ApplicationContextInitializer的Initialize()方法来对ApplicationContext进行进一步的处理
遍历所有的SpringApplicationRunListenner的contextPrepared()方法,通知【run监听器】ApplicationContext已经准备好了。
将之前通过@EnableAutoConfiguration获取的所有配置以及其他形式的IOC容器配置加载到已经准备完毕的ApplicationContext
遍历所有的SpringApplicationRunListener的contextLoaded()方法,通知【run监听器和ApplicationContext装填完毕】
调用ApplicationContext的refresh()——完成填充IOC容器
查找当前ApplicationContext中是否注册有CommandLineRunner,如果有,则遍历执行它们。
遍历执行SpringApplicationRunListener的finished()。
——启动完毕
SpringApplicationRunListener
是SpringBoot应用的main()执行过程中接不同执行时点通知的【监听者】。applicationListener
是Spring框架对【监听者】模式的一种框架实现SpringBoot中添加自定义的ApplicationListener的两种方式
ApplicationContextInitialzer
CommandLineRunner
相关文章推荐
- SpringBoot学习之spring-boot:run启动时,指定spring.profiles.active
- spring boot run启动分析
- SpringBoot启动流程简析(一)
- Spring Boot启动流程详解(一)
- spring boot容器启动流程
- Spring Boot 启动流程详解(二)
- 104. Spring Boot 启动流程分析第三篇【从零开始学Spring Boot】
- Spring Boot启动流程详解
- Spring Boot启动流程详解(一)
- spring-boot:run启动时,指定spring.profiles.active
- 【深入SpringBoot 1.3.5 第一章】Boot应用的启动流程
- 【深入SpringBoot 1.3.5 第一章】Boot应用的启动流程
- SpringBoot启动流程解析
- Spring Boot启动流程
- SpringBoot启动流程简析(四)
- Spring Boot源码分析之启动流程
- 【Spring Boot】SpringBoot-启动流程分析
- spring boot注册成linux服务时,启动参数RUN_ARGS的输入
- 为什么整合jsp后必须通过spring-boot:run方式启动?
- Spring Boot启动流程详解(一)