Spring 事件:Application Event

≯℡__Kan透↙ 提交于 2019-12-10 03:09:29
Spring Application Event

Spring 的事件(Application Event)为 Bean 与 Bean 之间的消息通信提供了支持。当一个 Bean 处理完一个任务之后,希望另一个 Bean 知道并能做相应的处理,这时我们就需要让另一个 Bean 监听当前 Bean 所发送的事件。(观察者模式)
Spring 的事件需要遵循以下流程:

  • 自定义事件,集成 ApplicationEvent。

  • 定义事件监听器,实现 ApplicationListener。

  • 使用容器发布事件。

以下代码基于 Spring Boot 实现
  1. 自定义事件

    public class DemoEvent extends ApplicationEvent {
    
      private static final long serialVersionUID = 1L;
      private String msg;
    
      public DemoEvnet(Object source, String msg) {
        super(source);
        this.msg = msg;
      }
    
      public String getMsg() {
        return msg;
      }
    
      public void setMsg(String msg) {
        this.msg = msg;
      }
    }
    
    
  2. 事件监听者

    @Component
    public class DemoListener implements ApplicationListener<DemoEvent> {
    
      public void onApplicationEvent(DemoEvent event) {
        String msg = event.getMsg();
        System.out.println("接收到了消息:" + msg);
      }
    }
    
    

代码解释:

实现 ApplicaionListener 接口,并制定监听的时间类型。
使用 onApplicationEvent 方法对消息进行接收处理。

  1. 事件发布者

    @Component
    public class DemoPublisher {
    
      @Autowired
      ApplicationContext applicationContext;
    
      public void publish(String msg) {
        applicaionContext.publishEvent(new DemoEvent(this, msg));
      }
    }
    
    

代码解释:

注入 ApplicaionContext 用来发布事件。
使用 ApplicaionContext 的 publishEvent 方法来发布。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!