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协议的使用