监听者模式
例如下单后短信/邮件通知
1.定义一个事件类继承ApplicationEvent
public class OrderEvent extends ApplicationEvent {
// 监听的数据
private String data;
public OrderEvent(Object source,String data) {
super(source);
this.data=data;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
}
2.短信/邮箱通知服务
public class SmsWxListener implements ApplicationListener<OrderEvent> {
/**
* 处理事件逻辑业务
*
* @param orderEvent
*/
@Override
public void onApplicationEvent(OrderEvent orderEvent) {
String data = orderEvent.getData();
System.out.println("发送微信监听---》" + data);
}
}
2.1另外一种方式 可对处理事件进行先后排序
public class SmsEmailListener implements SmartApplicationListener {
/**
* 确定监听的事件
* @param eventType
* @return
*/
@Override
public boolean supportsEventType(Class<? extends ApplicationEvent> eventType) {
return eventType==OrderEvent.class;
}
@Override
public int getOrder() {
return 66;//数字越小 优先级越高 靠前
}
/**
* 处理事件逻辑业务
* @param event
*/
@Override
public void onApplicationEvent(ApplicationEvent event) {
OrderEvent orderEvent=(OrderEvent)event;
String data= orderEvent.getData();
System.out.println("发送邮件监听---》"+data);
}
}
3.测试结果
@Autowired
ApplicationContext applicationContext;
@Test
public void test1(){
applicationContext.publishEvent(new OrderEvent(this,"用户下单-》"+1323));
}