Spring事件监听机制

本文介绍了如何在SpringBoot项目中利用事件监听机制处理订单成功通知,从同步到异步,以及如何通过配置实现异步通知,强调了Spring事件机制在单体应用中的适用性和与分布式应用的区别。
作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO

联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬

发短信案例问题分析

假设现在有这么一个业务场景:

用户在京西商城下单成功后,平台要发送短信通知用户下单成功

我们最直观的想法是直接在order()方法中添加发送短信的业务代码:

public void order(){
  // 下单操作
  log.info("下单成功, 订单号:{}", orderNumber);
  // 发送短信
  sendSms();
}

public void sendSms(){
    // 省略...
}

咋一看没什么不妥,但随着时间推移,上面的代码就会暴露出局限性:

一个月后,京西搞了自建物流体系,用户下单成功后,还需要通知物流系统发货

于是你又要打开OrderService修改order()方法:

public void order(){
  // 下单成功
  log.info("下单成功, 订单号:{}", orderNumber);
  // 发送短信
  sendSms();
  // 通知车队发货 
  notifyCar();
}

嗯,完美。

又过了一个月,东哥被抓了,股价暴跌,决定卖掉自己的车队,所以下单后就不用通知车队了

重新修改OrderService:

public void order(){
  // 下单成功
  log.info("下单成功, 订单号:{}", orderNumber);
  // 发送短信
  sendSms();
  // 车队没了,注释掉这行代码 
  // notifyCar();
}

又过了一个月,东哥明尼苏达州荣耀归来:回来做我的兄弟一起开车吧。

好的,东哥。

public void order(){
  // 下单成功
  log.info("下单成功, 订单号:{}", orderNumber);
  // 发送短信
  sendSms();
  // 车队买回来了,放开这段代码
  notifyCar()
}

车队回来了,你却受不了这大起大落异常刺激的生活,决定离职。

就在这时候,组长拉住了你,语重心长地和你说:

小伙子,知道什么叫“以增量的方式应对变化的需求”吗?听过Spring事件监听机制吗?

说时迟那时快,组长拿来一支笔和一张纸,唰唰唰画了一张图:

你顿时心领神会,扑通一声跪在了地上,开始敲起了代码。

利用Spring事件机制完成需求

环境准备

还是用之前的SpringBoot项目即可,只要你引入了spring-boot-starter-web。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值