基于状态驱动的AOP技术在模块解耦中的应用

背景

在交易系统的设计中,往往会在核心订单上引入状态机的设计。外部事件驱动订单状态翻转,并触发调用一系列的其他服务。

这样,在处理核心订单的代码中,往往会有很多调用其他服务的代码。


基于状态机的设计,引入Spring AOP技术,在主订单状态发生变化的时候,通知到其他模块。关心订单此状态的业务模块处理变更事件。


模块之间解耦



订单处理方法

@TradeStatusChange(entryStatus = TradeStatus.NEW, expectStatus = {TradeStatus.TO_CUTOFF, TradeStatus.TO_CANCEL_PAYMENT}, statusField = "tradeStatus", beanClass = BuyTradeDetailDTO.class)
public BuyTradeDetailDTO dealNewTradeRecord(BuyTradeDetailDTO tradeDetailDTO) {
    tradeDetailDTO.setTradeStatus(TradeStatus.FAIL);
    buyTradeDetailDao.update(tradeDetailDTO);

Around状态入参出
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值