Spring boot(四)-事件监听的4种实现方式
1、添加监听事件
运行主类:
SpringApplication.run(EventDemoApplication.class, args);
SpringApplication application = new SpringApplication(EventDemoApplication.class);
//添加监听事件
application.addListeners(new MyApplicationListener());
ConfigurableApplicationContext context = application.run(args);//启动时需要交给spring容器
//发布事件
context.publishEvent(new MyApplicationEvent(new Integer(12)));
context.close();
事物MyApplicationEvent类:
public class MyApplicationEvent extends ApplicationEvent { public MyApplicationEvent(Object source) { super(source); } }
public class MyApplicationListener implements ApplicationListener<MyApplicationEvent> { // @Override // public void onApplicationEvent(ApplicationEvent applicationEvent) { // System.out.println("接收到了事件"+applicationEvent.getClass()); // } @Override//是上面类的子类 public void onApplicationEvent(MyApplicationEvent myApplicationEvent) { // System.out.println("接收到了事件"+myApplicationEvent.getClass()); // System.out.println("接收到了事件yuan="+myApplicationEvent.getSource()); } }
2、使用@Component注解将该类装载入spring容器中
//@Component 第二种方式 public class MyApplicationListener implements ApplicationListener<MyApplicationEvent> { // @Override // public void onApplicationEvent(ApplicationEvent applicationEvent) { // System.out.println("接收到了事件"+applicationEvent.getClass()); // } @Override//是上面类的子类 public void onApplicationEvent(MyApplicationEvent myApplicationEvent) { // System.out.println("接收到了事件"+myApplicationEvent.getClass()); // System.out.println("接收到了事件yuan="+myApplicationEvent.getSource()); } }
3、创建MyApplicationListener 类
public class MyApplicationListener implements ApplicationListener<MyApplicationEvent> { @Override//是上面类的子类 public void onApplicationEvent(MyApplicationEvent myApplicationEvent) { // System.out.println("接收到了事件"+myApplicationEvent.getClass()); // System.out.println("接收到了事件yuan="+myApplicationEvent.getSource()); }
然后在application.properties中配置监听
#context.listener.classes=com.boot.event.eventdemo.MyApplicationListener --第三种方式-
MyApplicationListener类的路径
4、创建HandlerEvent类
@Component public class HandlerEvent { @EventListener//第四种 public void handlerEvent(MyApplicationEvent myApplicationEvent){ System.out.println("接收到了事件"+myApplicationEvent.getClass()); System.out.println("接收到了事件yuan="+myApplicationEvent.getSource()); } @EventListener public void handlerEvent1(MyApplicationEvent myApplicationEvent){ System.out.println("接收到了事件"+myApplicationEvent.getClass()); System.out.println("接收到了事件yuan="+myApplicationEvent.getSource()); } }

浙公网安备 33010602011771号