zoukankan      html  css  js  c++  java
  • springboot~ EventListener事件监听的使用

    EventListener事件触发和监听器可以对代码解耦,在一些与业务无关的,通用的操作方法,我们可以把它设计成事件监听器,像通知,消息这些模块都可以这样设计。

    事件源

    @Getter
    @Builder(toBuilder = true)
    public class OrderEvent {
      private String msg;
    }
    
    

    事件处理程序

    @Component
    public class OrderEventListener {
      @EventListener
      public void handleOrderEvent(OrderEvent event) {
        System.out.println("我监听到了handleOrderEvent发布的message为:" + event.getMsg());
      }
    }
    
    

    事件触发

    @Service
    public class OrderService {
      @Autowired
      private ApplicationContext context;
    
      public void publishOrder() {
        context.publishEvent(OrderEvent.builder().msg("建立订单").build());
      }
    }
    
    

    直接测试事件处理程序

    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class SecurityApplicationTests implements ApplicationContextAware {
      private ApplicationContext context = null;
      @Override
      public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.context = applicationContext;
      }
      @Test
      public void listener() {
        context.publishEvent(OrderEvent.builder().msg("测试方法").build());
      }
    

    测试业务代码

    由于@Service也是spring组件 ,所以它里面的事件处理程序也会被注入,这时直接注入业务对象即可

      @Autowired
      OrderService orderService;
      @Test
      public void listenerOrder() {
        orderService.publishOrder();
      }
    
  • 相关阅读:
    POJ3171 线段树优化dp
    Codeforces Round #590 (Div. 3)
    POJ2777 线段树区间染色问题
    POJ2182 Lost Cows 树状数组,二分
    P1908 逆序对 树状数组
    2019 Multi-University Training Contest 3
    主席树板子题区间第k小
    权值线段树板子题
    KMP板子题
    稀疏贝叶斯
  • 原文地址:https://www.cnblogs.com/lori/p/9871362.html
Copyright © 2011-2022 走看看