欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

spring boot之SpringApplication 事件监听

程序员文章站 2024-02-26 17:37:04
spring application listener 在 spring 框架中,有多种事件, 这些时间会在不同的运行时刻发布,来通知监听者。本文仅仅介绍 sprin...

spring application listener

在 spring 框架中,有多种事件, 这些时间会在不同的运行时刻发布,来通知监听者。本文仅仅介绍 springapplicationevent 的事件的监听。

事件类型

eventtype 发布时间
applicationcontextinitializedevent 在 springapplication正在启动, applicationcontext 已经准备好了,applicationcontextinitializers 被调用, bean definitions 被加载之前
applicationstartingevent 在一次启动之前发布
applicationenvironmentpreparedevent 在 environment 准备好之后,会有 context 去使用这一 environment, 会在 context 创建之前发出
applicationpreparedevent 会在 bean definitions 加载之后,refresh 之前发布
applicationstartedevent context 更新之后,任何应用或命令行启动调用之前
applicationreadyevent 任何应用或命令行启动调用之后发布,说明应用已经可以被请求了
applicationfailedevent 启动发生有异常时发步

如何监听

监听器需要使用 org.springframework.context.applicationlistener 这个接口的实例, 其声明如下:

@functionalinterface
public interface applicationlistener<e extends applicationevent> extends eventlistener {
  /**
  * handle an application event. * @param event the event to respond to
  */ 
 void onapplicationevent(e event);
}

需要使用 springapplication.addlisteners(…​) 或 springapplicationbuilder.listeners(…​) 来添加监听器。也可以在 meta-inf/spring.factories 文件中配置:org.springframework.context.applicationlistener=com.example.project.mylistener。

例子:

public class startingeventlistener implements applicationlistener<applicationstartingevent> {
 @override
 public void onapplicationevent(applicationstartingevent applicationstartingevent) {
  system.out.println("called own starting listener");

  system.out.println(applicationstartingevent.getclass());
 }
}

@springbootapplication
public class demoapplication {
 public static void main(string[] args){
  springapplication application = new springapplication(demoapplication.class);
  application.addlisteners(new startingeventlistener());
  application.run(args);
 }
}

终端运行 jar 包:

$ java -jar build/libs/springlisteners-0.0.1-snapshot.jar
called own starting listener
class org.springframework.boot.context.event.applicationstartingevent

 .  ____     _      __ _ _
 /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/ ___)| |_)| | | | | || (_| | ) ) ) )
 ' |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: spring boot ::    (v2.1.3.release)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。