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();
      }
    
  • 相关阅读:
    C# TryParse
    C#委托的学习笔记
    C#基础学习C# 8.0 In a Nut Shell
    Everything学习之三
    Everything学习笔记二
    搜索软件everything帮助文档全文翻译
    Git笔记之基础命令
    Git学习笔记
    附加属性
    日期函数
  • 原文地址:https://www.cnblogs.com/lori/p/9871362.html
Copyright © 2011-2022 走看看