首页 > 解决方案 > 如何处理微服务字中的编译时间常数?

问题描述

前段时间,我们将单体应用模块化为许多小组件。它们中的每一个都存储在专用的 git 存储库中,并由不同的团队独立进行版本控制/发布

我们遇到了我们在很多地方定义的公共静态最终常量被其他模块使用的问题。这意味着当您构建依赖模块时,它会将常量值编译为其字节码

我们的模块软件包交付给具有运行生产(最后一个稳定里程碑)和质量(新实现的功能,需要在投入生产之前进行测试)环境的客户

为了简化和说明问题,假设我们在生产环境中交付并运行了以下模块

| Module | version | 
| A      | 1.1.0   |
| B      | 1.2.0   |
| Common | 1.0.0   |

我们在 Common 模块中定义了一个 public staic final 常量,A 和 B 都在使用它们

在当前的 sprint 中,我们修改了模块 A 和 Common(我们正在更新其中的一个常量)。模块 A 和 common 被重新编译并发布,因此客户将收到包安装程序:

| Module | version | 
| A      | 1.2.0   |
| B      | 1.2.0   |
| Common | 1.1.0   |

这将导致模块 B 已在上一个 sprint 中更新的常量的字节码旧值中编译的问题

如果我们决定重新编译模块 B:

我是否从错误的角度解决了这个问题,因为没有解决方案似乎 100% 解决了问题,或者需要付出很多努力才能实现?

在此先感谢您的任何建议

标签: javamicroservicescompile-time-constant

解决方案


推荐阅读