大型重构实践-多国家部署 spring 配置文件

285 阅读2分钟

趁着这个周末加班...对项目的spring配置文件做了一次重构,使配置文件的理解方式更加清晰了。 先说项目情况,当前项目刚从一波同事手中接手,

项目最开始是只有国内版本, 然后复制粘贴开发了印尼版本, 再复制粘贴开发了泰国版本

每个版本在不同的代码库, 功能和流程大同小异,但是依赖的服务接口都不相同(基线服务是不同的开发团队开发使然)。 公司为了后续快速部署新国家,使出了大招 国际化 , 那么首先要做的就是合并代码,添加适配层(这些工作同样不简单),那么我们来看看合并后的代码spring 配置及加载文件是怎么样的

大型重构实践
先说说问题

  1. 左边的图是spring加载文件,上面的红圈是用作适配作用,国内的使用pop ,国外的使用 overseas,因为文件名称不同,所以在项目的配置中肯定有个判断点 在配置中,这儿使用了maven filter过滤,编译时加载不同的适配层
    大型重构实践
  2. 左边下面的红圈功能只有在中国使用,外国没有,那么从文件名中没有区分,那么一定存在另一个判断点在配置中
  3. 中间的图是因为将 maven 的 filter过滤功能 和 spring 的 el表达式运行时注入功能 混用(因为都是用占位符${...})
  4. 右面的图是在不同环境、不同国家的profile选择,(大家能看出来怎么选吗)

通过梳理和分析,针对上述问题,调整测试后的 配置结构如下:

大型重构实践

  1. 新建profiles文件夹,再建部署国家文件夹,里面根据不同的运行环境(dev、test、production)配置文件,这样我们在pom中只要根据国家和运行环境可以一次性将所需文件打包,另外因为文件名称一致,我们去除了一个判断点
    大型重构实践
  2. 在右上图中我们可以在不同国家加载不同的配置文件,可以灵活添加组合
  3. 通过右下图我们可以看出我们在国家和运行维度两个维度构建profile,十分清晰,很容找到当前的maven profile 。

通过 重构,将多国家部署spring配置文件分离的更加清晰,也更容易使团队理解,当然重构过后别忘了测试哦。

欢迎关注bob,后续会将工作中的一些心得和大家一起分享。