观察者设计模式 - 事件监听
小于 1 分钟Spring全家桶SpringBoot精讲细讲
事件
/**
* @Desc 定义事件
* @Author HeJin
* @Date 2021/5/11 17:16
*/
public class MsgEvent extends ApplicationEvent {
public MsgEvent(Object source) {
super(source);
}
}
事件的监听
EmailListener
@Component
public class EmailListener implements ApplicationListener<MsgEvent> {
@Override
public void onApplicationEvent(MsgEvent orderEvent) {
String source = (String) orderEvent.getSource();
System.out.println("开始发邮件:" + source);
}
}
SmsListener
@Component
public class SmsListener implements ApplicationListener<MsgEvent> {
@Override
public void onApplicationEvent(MsgEvent orderEvent) {
String source = (String) orderEvent.getSource();
System.out.println("开始发短信:" + source);
}
}
发布事件
@RestController
public class UserController implements ApplicationContextAware {
private ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
@RequestMapping("/api/getMsg")
public String getMsg(){
applicationContext.publishEvent(new MsgEvent("张三下单了"));
return "观察者设计模式";
}
}
访问接口/api/getMsg
