SpringBoot执行流程
来源:互联网 发布:千里眼软件下载 编辑:程序博客网 时间:2024/06/06 03:40
SpringBoot执行流程
@(SpringBoot)[springboot,启动流程]
- SpringBoot执行流程
- 基本概述
- SpringBoot应用启动步骤简要示意图
- SpringApplicationRunListener
- ApplicationContextInitializer
- ApplicationRunner和CommandLineRunner
- ApplicationRunner
- CommandLineRunner
- SpringBoot执行流程详细版
基本概述
SpringBoot
将Spring
应用的启动流程进行了一个“模板化”的操作,所以我们才能通过SpringApplication.run(XXX.class, args)
的方式来进行一站式的启动。其内部逻辑也是个较复杂的过程,下文将对执行流程进行阐述。本流程参考的SpringBoot
版本为1.4.3.RELEASE
。
SpringBoot应用启动步骤简要示意图
通过上面这个简要示意图,可以看出,只要将事件通知的扩展点忽略,SpringBoot的执行流程并不是想象中那么复杂。
SpringApplicationRunListener
SpringApplicationRunListener
是SpringBoot
执行过程中,不同执行时间点时间通知的监听者,一般来说也没有必要自己实现一个SpringApplicationRunListener
,即使是SpringBoot
默认也只实现了一个org.springframework.boot.context.event.EventPublishingRunListener
。通过这个类,在SpringBoot
启动时,在不同的时间点发布不同的应用事件类型ApplicationEvent
。SpringBoot
初始化时加载的ApplicationListener
如果对这些事件感兴趣,则可以接收并处理。
public interface SpringApplicationRunListener { void started(); void environmentPrepared(ConfigurableEnvironment environment); void contextPrepared(ConfigurableApplicationContext context); void contextLoaded(ConfigurableApplicationContext context); void finished(ConfigurableApplicationContext context, Throwable exception);}
ApplicationContextInitializer
通过这个类,可以在ApplicationContext
调用refresh()
方法前,对ApplicationContext
对象做进一步的设置或者处理。
public interface ApplicationContextInitializer<C extends ConfigurableApplicationContext> { void initialize(C applicationContext);}
ApplicationRunner和CommandLineRunner
我们在开发中可能会有这样的情景。需要在容器启动的时候执行一些内容。比如读取配置文件,数据库连接之类的。SpringBoot
给我们提供了两个接口来帮助我们实现这种需求。这两个接口分别为CommandLineRunner
和ApplicationRunner
。他们的执行时机为容器启动完成的时候。
这两个接口中有一个run
方法,我们只需要实现这个方法即可。这两个接口的不同之处在于:ApplicationRunner
中run
方法的参数为ApplicationArguments
,而CommandLineRunner
接口中run
方法的参数为String
数组。
如果有多个实现类,而你需要他们按一定顺序执行的话,可以在实现类上加上@Order
注解。@Order(value=整数值)
。SpringBoot
会按照@Order
中的value
值从小到大依次执行。
ApplicationRunner
public interface ApplicationRunner { void run(ApplicationArguments args) throws Exception;}
CommandLineRunner
public interface CommandLineRunner { void run(String... args) throws Exception;}
SpringBoot执行流程详细版
——————参考《SpringBoot揭秘——快速构建微服务体系》
——————参考《SpringBoot之CommandLineRunner接口和ApplicationRunner接口区别》
- SpringBoot执行流程
- SpringBoot执行流程
- SpringBoot-启动流程分析
- SpringBoot应用启动流程
- SpringBoot启动流程解析
- SpringBoot启动流程解析
- SpringBoot应用启动流程
- springboot 执行定时任务
- springboot scheduled 异步执行
- 执行流程
- SpringBoot启动流程详解(搬运)
- SpringBoot开发详解(十二) -- SpringBoot中执行定时任务
- springboot jenkins 部署 通过shell执行,最后springboot启动失败
- WebWork执行流程
- 控制执行流程
- 浅谈Webwork2执行流程
- PsLookupProcessByProcessId的执行流程
- MFC应用程序执行流程
- 考研
- codeforces 724G. Xor-matic Number of the Graph
- PAT (Advanced Level) Practise 1092
- vue.js
- java多线程状态详解
- SpringBoot执行流程
- 关于N!的几个问题
- vin码识别(车架号识别)sdk
- 板楼是什么意思啊?
- Angular中的$http
- 2017年春-高级软件工程课程总结
- 2.变量
- 【脚本语言系列】关于Python并发技术asyncio,你需要知道的事
- 【Angular】——封装并发布组件