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();
      }
    
  • 相关阅读:
    Standford机器学习 聚类算法(clustering)和非监督学习(unsupervised Learning)
    cocos2d-x 消类游戏,类似Diamond dash 设计
    cocos2d-x精灵的添加和移动
    小学生四则运算测试网站文档更新
    第四次作业
    第三次作业
    第二周作业第三题_张东明
    第二章
    第二周的作业第二题_张东明
    第二次作业第3题_JH
  • 原文地址:https://www.cnblogs.com/lori/p/9871362.html
Copyright © 2011-2022 走看看