Spring 事件:Application Event

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 方法来发布。

posted @ 2018-12-18 16:10  21Java  阅读(676)  评论(1编辑  收藏  举报