作者简介:大家好,我是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。

本文介绍了如何在SpringBoot项目中利用事件监听机制处理订单成功通知,从同步到异步,以及如何通过配置实现异步通知,强调了Spring事件机制在单体应用中的适用性和与分布式应用的区别。
最低0.47元/天 解锁文章
630

被折叠的 条评论
为什么被折叠?



