β

Spring Boot 2.0 新特性(二):新增事件ApplicationStartedEvent

程序猿DD | 博客 330 阅读

今天继续来聊Spring Boot 2.0的新特性。本文将具体说说2.0版本中的事件模型,尤其是新增的事件: ApplicationStartedEvent

在Spring Boot 2.0中对事件模型做了一些增强,主要就是增加了 ApplicationStartedEvent 事件,所以在2.0版本中所有的事件按执行的先后顺序如下:

从上面的列表中,我们可以看到 ApplicationStartedEvent 位于 ApplicationPreparedEvent 之后, ApplicationReadyEvent 之前。

下面我们通过代码的方式来直观的感受这个事件的切入位置,以便与将来我们在这个切入点加入自己需要的逻辑。

第一步:我们可以编写 ApplicationPreparedEvent ApplicationStartedEvent 以及 ApplicationReadyEvent 三个事件的监听器,然后在这三个事件触发的时候打印一些日志来观察它们各自的切入点,比如:

org.springframework.context.ApplicationListener=
com.didispace.ApplicationPreparedEventListener,\
com.didispace.ApplicationReadyEventListener,\
com.didispace.ApplicationStartedEventListener

此时,我们运行Spring Boot应用可以获得类似如下日志输出:

@Slf4j
@SpringBootApplication
public class Application {

public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}

@Bean
public DataLoader dataLoader() {
return new DataLoader();
}

@Slf4j
static class DataLoader implements CommandLineRunner {

@Override
public void run(String... strings) throws Exception {
log.info("Loading data...");
}
}

}

最后,我们再运行程序,此时我们可以发现这两个事件中间输出了上面定义的 DataLoader 的输出内容,具体如下:

-03-07 18:15:20.845  INFO 83387 --- [main] c.d.ApplicationStartedEventListener      : ......ApplicationStartedEvent......
2018-03-07 18:15:20.846 INFO 83387 --- [main] com.didispace.Application$DataLoader : Loading data...
2018-03-07 18:15:20.847 INFO 83387 --- [main] c.d.ApplicationReadyEventListener : ......ApplicationReadyEvent......

代码示例

本文的相关例子可以查看下面仓库中的 Chapter1-2-1 目录:

Spring Booot 2.0 新特性详解正在连载, 点击看看都有哪些解读

今天继续来聊Spring Boot 2.0的新特性。本文将具体说说2.0版本中的事件模型,尤其是新增的事件: ApplicationStartedEvent

在Spring Boo

作者:程序猿DD | 博客
Dream big, work smart, deliver fast

发表评论