核心代码之版本管理与更新推送

需求:平台的核心代码,只有打成加签的jar才能不易被个别项目现场所覆盖,但他们想扩展功能怎么办?最好的方法就是面向接口编程,预留接口给他们二次开发,但产品当初的技术框架并未如此设计,所有现在只能退而求其次了。

一.场景模拟

1.比如,产品上Business.java中,方法会初始化有效状态作为过滤条件


但苏州现场情况特殊,登录公司不是总公司才要设置有效状态,那么要修改代码


2.比如,产品上的表单计算service


但现在某泰州现场希望增加预执行函数的逻辑,则


也可能某上海现场希望添加后置执行函数,则


以上,可梳理出,以下具体项目修改平台代码的几个类别
修改目的
    A.修改bug
    B.调整业务逻辑
    C.追加新功能
修改方式
    A.加前置方法
    B.加后置方法
    C.修改方法自身逻辑
修改文件类别
    A.由IOC管理的类,如加@Controller,@Service,@Config等注解
    B.子类反射的平台结构类,如MaintBusiness/SheetBusiness/Business等
    C.普通工具类

二.方案设计
从修改目的来说,修复项目的BUG时,先要修改产品代码,再打成jar包,推送到项目现场;而对于个别项目调整业务逻辑或者追加新功能,可以采取在extend目录下短路jar文件的方式


不过,此种方法存在缺陷,即尽管你只想改Business.Java下的其中一个方法,也要将Business.Java整体拷贝到extend目录下,进行修改(后期研究Business.java可同时存在于extend和jar下,且extend下Business只保存修改或新增的方法)
除此之外,我们可以充分利用SpringBoot的AOP特性,增强类及方法的功能

比如,上面表单计算的例子,就完全可以采用这种AOP的方式进行修改.
禁止修改平台jar文件,只允许通过短路jar文件或者springBoot AOP的方式对平台代码进行功能增强,至少可以保证快速推送到现场,可能还是需要外围的代码做一些适配处理,但比整合多份平台代码而言,已经好太多了。

猜你喜欢

转载自blog.csdn.net/weixin_38316944/article/details/115358609