场景描述
中小业务系统中,有时候会面临一些比较相似的业务场景。
- 当XXX创建成功后,需要给XXX推送一条业务消息;
- 当XXX更新的时候,需要给XXX推送一条业务提醒;
- 当XXX创建OR更新的时候,需要将最新的数据推送到搜索引擎中,以方便其他业务系统在搜索引擎中能查询到;
- 当XXX更新的时候,需要更新分布式缓存的XXX数据;
- ……
这些场景都有相似的特征,如下
特征 | 描述 |
---|---|
异步 | 实际上与主流程关系不大,可以作为附属流程异步执行 |
事务 | 大多在事务结束之后执行 |
并行 | 可以串行执行,也可以并行执行,对最终结果影响不大 |
Mybatis拦截器
Mybatis提供了一些机制,可以允许我们在做数据库操作的时候进行我们额外的一些程序。当然,这看起来并没有JPA的EntityListener好用。
但是通过这些机制,我们可以达成我们主要的目的,解耦合。(解耦合的好处显而易见,我们在关注主流程业务的时候,附属流程的业务也更容易扩展)