一、定义好事件。这里的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";
}
五、模拟请求验证