SpringApplicationRunListener
发布日期:2021-06-28 23:30:15 浏览次数:103 分类:技术文章

本文共 1972 字,大约阅读时间需要 6 分钟。

SpringApplicationRunListener

SpringApplicationRunListener是一个只有SpringBoot应用的
main方法执行过程中接收不同执行时点事件通知的监听者

public interface SpringApplicationRunListener {
void started(); void environmentPrepared(ConfigurableEnvironment environment); void contextPrepared(ConfigurableApplicationContext context); void contextLoaded(ConfigurableApplicationContext context); void finished(ConfigurableApplicationContext context, Throwable exception);}

对于我们来说,基本没什么常见的场景需要自己实现一个SpringApplicationRunListener,即使SpringBoot默认也只是实现了一个org.spring-framework.boot.context.event.EventPublishingRunListener用于在SpringBoot启动的不同时点发布不同的应用事件类型(ApplicationEvent),如果有哪些ApplicationListener对这些应用事件感兴趣,则可以接收并处理。(还记得SpringApplication实例初始化的时候加载了一批ApplicationListener,但是在run方法执行流程中却没有被使用的丝毫痕迹吗?EventPublishingRunListener就是答案!)

假设我们真的有场景需要自定义一个SpringApplicationRunListener实现,那么有一点需要注意,即任何一个SpringApplicationRunListener实现类的构造方法(Constructor)需要有两个构造参数,一个构造参数的类型就是我们的org.springframework.boot.SpringApplication,另外一个就是args参数列表的String[]:

public class DemoSpringApplicationRunListener implements SpringApplicationRunListener {
@Override public void started() {
// do whatever you want to do } @Override public void environmentPrepared(ConfigurableEnvironment environment) {
// do whatever you want to do } @Override public void contextPrepared(ConfigurableApplicationContext context) {
// do whatever you want to do } @Override public void contextLoaded(ConfigurableApplicationContext context) {
// do whatever you want to do } @Override public void finished(ConfigurableApplicationContext context, Throwable exception) {
// do whatever you want to do }}

之后,我们可以通过SpringFactoriesLoader立下的规矩,在当前SpringBoot应用的classpath下的META-INF/spring.factories文件中进行类似如下的配置:

org.springframework.boot.SpringApplicationRunListener=\com.keevol.springboot.demo.DemoSpringApplicationRunListener

然后SpringApplication就会在运行的时候调用它啦!

转载地址:https://blog.csdn.net/ynchyong/article/details/112510165 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:ApplicationListener
下一篇:自动配置的幕后英雄--SpringFactoriesLoader

发表评论

最新留言

不错!
[***.144.177.141]2024年04月14日 20时42分20秒