springboot监听事件的方式有四种:手动在ApplicationContext中添加监听器将监听器加载到spring容器中在application.properties中配置监听器通过@EventListener注解实现事件监听事件和自定义监听器类的实现:自定义事件:继承ApplicationEvent抽象类,然后定义自己的构造函数自定义监听:实现ApplicationListener接口,然后实现onApplicationEvent方法下面四种事件监听的具体实现。方法一首先创建MyListener1类publicclassMyListener1implementsApplicationListener{Loggerlogger=Logger.getLogger(MyListener1.class);publicvoidonApplicationEvent(MyEventevent){logger.info(String.format("%slistenerTotheeventsource:%s.",MyListener1.class.getName(),event.getSource()));}}然后在springboot应用启动类中获取ConfigurableApplicationContext上下文,加载并监听@SpringBootApplicationpublicclassLisenterApplication{publicstaticvoidmain(String[]args){ConfigurableApplicationContextcontext=SpringApplication.run(LisenterApplication.class,args);//加载监听context.addApplicationListener(newMyListener1());}}方法二创建MyListener2类,使用@Component注解加载到spring容器中@ComponentpublicclassMyListener2实现entsApplicationListener{记录器logger=Logger.getLogger(MyListener2.class);publicvoidonApplicationEvent(MyEventevent){logger.info(String.format("%s监听事件源:%s。",MyListener2.class.getName(),event.getSource()));}}方法三首先创建MyListener3类publicclassMyListener3implementsApplicationListener{Loggerlogger=Logger.getLogger(MyListener3.class);publicvoidonApplicationEvent(MyEventevent){logger.info(String.format("%s监听事件源:%s。",MyListener3.class.getName(),event.getSource()));}}然后在application.properties中配置监听context.listener.classes=com.listener.MyListener3方法4创建MyListener4类,java训练这个类不需要实现ApplicationListener接口,使用@EventListener装饰具体方法@Componentpublic类MyListener4{记录器logger=Logger.getLogger(MyListener4.class);@EventListenerpublicvoidlistener(MyEventevent){logger.info(String.format("%s监听到事件源:%s。",MyListener4.class.getName(),event.getSource()));}}自定义事件代码如下:@SuppressWarnings("serial")publicClassMyEventextendsApplicationEvent{publicMyEvent(Objectsource){super(source);}}用于测试(在启动类中添加发布事件的逻辑):@SpringBootApplicationpublicclassLisenterApplication{publicstaticvoidmain(String[]args){ConfigurableApplicationContextcontext=SpringApplication.run(LisenterApplication.class,args);//加载事件context.addApplicationListener(newMyListener1());//发布事件context.publishEvent(newMyEvent("Testevent."));}}启动后打印日志如下:2018-06-1510:51:20.198INFO4628---[main]com.listener.MyListener3:com.listener.MyListener3listenedtotheeventsource:testevent..2018-06-1510:51:20.198INFO4628---[main]com.listener.MyListener4:com.listener.MyListener4监听事件源:测试事件..2018-06-1510:51:20.199INFO4628---[main]com.listener.MyListener2:com.listener.MyListener2监听事件源:testevent..2018-06-1510:51:20.199INFO4628---[main]com.listener.MyListener1:com.listener.MyLlistener1监听事件源:testevent..从日志打印可以看出,SpringBoot的四个事件的执行是有顺序的。