背景
随着业务的快速发展老的系统将逐渐的无法快速支撑现有业务迭代重构一个必然的过程; 然而在底层业务系统重构的过程中, 对外提供的 API 也同时需要进行相应的升级替换; 推动外部调用方替换新的 API 是十分艰难而漫长的过程, 因此往往很多时候不得不需要在旧的 API 内部进行改造升级. 旧 API 的内部改造... 老代码接口无单测逻辑惨不忍睹!!! 如何能避免不改动老的代码优雅的完成接口的内部改造升级?
实现方案
利用自定义注解 + aop 不侵入旧代码进行切换
利用 Redis 对接口进行灰度控制来保证业务逻辑平滑过渡
部分代码
自定义注解部分:
Aspect 部分:
老的 V1 版本 API 添加注解:
V2 版本 API
达到比较优雅目的:
a. 内部升级不去改动惨不忍睹的老代码
b. 方便测试人员进行两个版本的 API 即实现逻辑进行比对测试
c. 利用灰度开关平滑的进行过渡
d. 后续外部调用方进行主动替换升级版本改动小
来源: https://www.cnblogs.com/Onlywjy/p/12289365.html