springboot学习(八) 自定义监听

xiaoxiao2021-02-28  10

自定义监听

springboot 监听器有很多种,主要包括6种: ApplicationEnvironmentPreparedListener ApplicationFailedListener ApplicationPreparedListener ApplicationReadyListener ApplicationStartingListener SpringApplicationListener 各种监听器的意义可在网上查到很多资料。这里讲解的是自定义一个自己的监听事件,可以作一些特殊处理。这里假设在 ApplicationStartedEvent后触发另一个自定义监听。

自定义一个event 继承ApplicationEvent

public class MyApplicationEvent extends ApplicationEvent { private String msg; public void setMsg(String msg) { this.msg = msg; } public String getMsg() { return msg; } /** * Create a new ApplicationEvent. * * @param source the object on which the event initially occurred (never {@code null}) */ public MyApplicationEvent(Object source) { super(source); } }

自定义监听器实现ApplicationListener

@Slf4j public class MyCustomListener implements ApplicationListener<MyApplicationEvent> { @Override public void onApplicationEvent(MyApplicationEvent event) { String msg = event.getMsg(); log.info(msg); } }

使用applicationContext触发这个自定义事件,这里只是举个例子,可以在任何其他地方触发这个事件 applicationContext #publishEvent(myEvent);

@Slf4j public class MyStartedListener implements ApplicationListener<ApplicationStartedEvent> { @Override public void onApplicationEvent(ApplicationStartedEvent event) { log.info("服务已经启动啦"); MyApplicationEvent myEvent = new MyApplicationEvent("myEvent"); myEvent.setMsg("我自定义了一个事件"); event.getApplicationContext().publishEvent(myEvent); } }

因为这里是在MyStartedListener 这个监听里触发的,那么把这俩自定义的监听都添加一下

public static void main(String[] args) { SpringApplication springApplication = new SpringApplication(BootApplication.class); springApplication.addListeners(new MyStartedListener(), new MyCustomListener()); springApplication.run( args); }

github 源码 上一篇 springboot 各种方式的校验 下一篇 websocket stomp配置,与session的结合以及ws/wss协议的使用

转载请注明原文地址: https://www.6miu.com/read-2650306.html

最新回复(0)