有没有办法创建一个spring配置类并将其用于我的所有微服务?
现在我必须将一个重复的配置类复制到所有的微服务中。如果有更改,我必须在所有模块中进行更改。
我使用apachezookeeper将我的配置集中在一个地方。为了设置连接到zookeeper服务器的身份验证细节,我必须在spring@Configuration中为CuratorFramework类创建一个新的bean,在任何将其配置保存在zookeepper上的微服务中。
是的,您可以:
- 创建一个具有配置的模块(maven、gradle-managed等等(。将所有公共bean添加到此模块中以供重用。这将是一种"基础设施">
- 可选择添加
spring.factories
文件以自动"加载"配置 - 在微服务中(每个微服务都应该在不同的模块中(,添加对该公共模块的依赖项
如果您添加了spring.factories
-配置将自动加载,如果您没有添加,则必须在每个模块中显式导入此配置。但在任何情况下,您都不需要重复代码。
SO中有很多关于弹簧工厂的教程/线程,所以如果你不熟悉这个功能,你可以在这里阅读,例如
如果一个系统有很多常见的东西,而且这些东西经常变化,那么它就是一个整体。也许你拆分为微服务并不是最好的方法。
关于共同的东西,你有3个选择:
- 复制/粘贴(就像现在一样(
- 中断库(每个微服务都依赖于一个公共模块(
- 在他自己的微服务中隔离东西
请记住,DRY在一个微服务内必须严格,但在微服务之间可以放松。