日常开发中,我们经常会碰到这样的业务场景:用户注册,注册成功后需要发送邮箱、短信提示用户,通常我们都是这样写:
/**
* 用户注册
*/
@GetMapping("/userRegister")
public String userRegister(UserVo userVo) {
//校验参数
//存库
//发送邮件
//发送短信
//API返回结果
return "操作成功!";
}
可以发现,用户注册与信息推送强耦合,用户注册其实到存库成功,就已经算是完成了,后面的信息推送都是额外的操作,甚至信息推送失败报错,还会影响API接口的结果,如果在同一事务,报错信息不捕获,还会导致事务回滚,存库失败。
本文记录springboot使用@EventListener监听事件、ApplicationEventPublisher.publishEvent发布事件实现业务解耦。
查看博文
SpringBoot - 事件机制使用详解(ApplicationEvent、ApplicationListener)_springboot 事件-CSDN博客
https://www.cnblogs.com/huanzi-qch/p/14792984.html