所有 spring 个微服务的重复配置代码问题

Duplicate config code problem for all spring microservices

有没有办法创建 spring 配置 class 并将其用于我所有的微服务?

现在我必须将重复的配置 class 复制到所有微服务。如果有更改,我必须在所有模块中进行更改。

我使用 apache zookeeper 将我的配置集中在一个地方。为了设置连接到 zookeeper 服务器的身份验证详细信息,我必须在 spring @Configuration 中为 CuratorFramework class 创建一个新的 bean,在任何将其配置保存在 zookeeper 上的微服务中。

是的,您可以:

  • 创建一个带有配置的模块(maven,gradle 托管,等等)。将所有公共 bean 添加到此模块以供重用。这将是一种 "infra".
  • 可选择添加 spring.factories 文件以自动 "load" 配置
  • 在微服务中(每个微服务都应该在不同的模块中)添加对该通用模块的依赖。

如果您添加了 spring.factories - 配置将自动加载,如果您没有添加,则必须在每个模块中显式导入此配置。但在任何情况下,您都不需要重复代码。

SO 中有很多关于 spring 工厂的教程/主题,所以如果您不熟悉此功能 - 您可以阅读 here for example

如果一个系统有很多共同的东西和经常变化的东西,那么它就是一个整体。也许你拆分到微服务并不是最好的方法。

关于共享的常见内容,您有 3 个选择:

  • Copy/paste(就像你现在做的那样)
  • 分解库(每个微服务都依赖于一个公共模块)
  • 在自己的微服务中隔离东西

请记住,DRY 在一个微服务内必须是严格的,但在微服务之间可以放松。