一、定义好事件。这里的Map 应该改为事件要传递的对象。
public class InquiryRefundEvent extends ApplicationEvent {
private Map<String,String> data;
public InquiryRefundEvent(Object source) {
super(source);
}
public InquiryRefundEvent(Object source, Map<String,String> data) {
super(source);
this.data = data;
}
public Map<String,String> getData(){
return data;
}
}
二、定义Listener.写入事件要触发的动作
@Component
public class InquiryRefundListener implements ApplicationListener<InquiryRefundEvent> {
@Override
public void onApplicationEvent(InquiryRefundEvent inquiryRefundEvent) {
Map<String, String> data = inquiryRefundEvent.getData();
System.out.println("事件触发后置动作:" + data);
}
}
三、定义publisher.利用Spring容器定义发布事件的api
@Component
public class InquiryRefundPublisher implements ApplicationContextAware {
private ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
public void publish(InquiryRefundEvent event){
applicationContext.publishEvent(event);
}
}
四、业务中实际发布事件
@Autowired
InquiryRefundPublisher inquiryRefundPublisher;
@RequestMapping("/a")
@ResponseBody
public String hello(){
Map<String,String> map = new HashMap<String,String>();
InquiryRefundEvent inquiryRefundEvent = new InquiryRefundEvent(new Object(), map);
inquiryRefundPublisher.publish(inquiryRefundEvent);
return "hhh";
}
五、模拟请求验证


该博客介绍了如何在Java应用中使用Spring的事件驱动模型。通过创建自定义事件`InquiryRefundEvent`,监听器`InquiryRefundListener`来处理事件,以及发布事件的`InquiryRefundPublisher`组件,展示了在业务流程中如何触发和响应事件。当在 `/a` 路由上接收到请求时,会发布一个包含查询退款信息的事件,并在监听器中执行相应的后续操作。

550

被折叠的 条评论
为什么被折叠?



