当我们的
Service方法需要在"执行前 / 执行中 / 执行后 / 执行失败"四个节点预埋入口,让后续业务方能"只重写对应方法就实现新需求"时,该怎么设计?
这是一道非常典型的"对扩展开放、对修改封闭"(OCP)诉求题。在 Spring + MyBatis-Plus 的项目里,由于 ServiceImpl 的单继承约束,可选的方案并不多。本文给出一份可直接落地的方案 A(模板方法 + ServiceImpl 继承),以及完整的最佳实践清单。
2026/8/20大约 9 分钟
当我们的
Service方法需要在"执行前 / 执行中 / 执行后 / 执行失败"四个节点预埋入口,让后续业务方能"只重写对应方法就实现新需求"时,该怎么设计?
这是一道非常典型的"对扩展开放、对修改封闭"(OCP)诉求题。在 Spring + MyBatis-Plus 的项目里,由于 ServiceImpl 的单继承约束,可选的方案并不多。本文给出一份可直接落地的方案 A(模板方法 + ServiceImpl 继承),以及完整的最佳实践清单。