springboot~ EventListener事件监听的使用
Posted 敢于对过去告一个段落,才有信心掀开新的篇章!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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();
}
以上是关于springboot~ EventListener事件监听的使用的主要内容,如果未能解决你的问题,请参考以下文章
springboot监听器的使用(ApplicationListenerSmartApplicationListener@EventListener)
springboot事件event的使用(关键词:ApplicationEvent,@EventListener,publishEvent)
springboot事件event的使用(关键词:ApplicationEvent,@EventListener,publishEvent)
springboot事件event的使用(关键词:ApplicationEvent,@EventListener,publishEvent)