中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

springboot~ EventListener事件(jian)監聽(ting)的(de)使用

EventListener事件觸發(fa)和監聽器(qi)可(ke)以(yi)(yi)對代碼(ma)解耦,在一(yi)些(xie)與(yu)業(ye)務無關的,通用的操作方法,我們可(ke)以(yi)(yi)把它設計成事件監聽器(qi),像通知(zhi),消息這些(xie)模塊(kuai)都可(ke)以(yi)(yi)這樣設計。

事件源

@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組件 ,所以它里面(mian)的事(shi)件處理程序也會被(bei)注入,這時直接注入業務(wu)對(dui)象即可(ke)

  @Autowired
  OrderService orderService;
  @Test
  public void listenerOrder() {
    orderService.publishOrder();
  }
posted @ 2018-10-29 16:28  張占嶺  閱讀(16645)  評論(1)    收藏  舉報