Java 在嵌套映射中重新使用spring配置属性

Java 在嵌套映射中重新使用spring配置属性,java,spring,spring-boot,Java,Spring,Spring Boot,我有一个支持多租户的Spring Boot应用程序。我希望支持一组自定义配置属性的全局和每租户配置。对于每个属性,都可以配置全局值,但对于特定租户,该值可能会被覆盖 目前,我只有全局属性,使用了一些带有@ConfigurationProperties注释的类。 例如 我希望能够像这样配置属性: props1.a=... props1.b=... props2.x=... props2.y=... props3.z=... tenant.some-tenant-id.props1.b=...

我有一个支持多租户的Spring Boot应用程序。我希望支持一组自定义配置属性的全局和每租户配置。对于每个属性,都可以配置全局值,但对于特定租户,该值可能会被覆盖

目前,我只有全局属性,使用了一些带有
@ConfigurationProperties
注释的类。 例如

我希望能够像这样配置属性:

props1.a=...
props1.b=...

props2.x=...
props2.y=...

props3.z=...

tenant.some-tenant-id.props1.b=...
tenant.some-tenant-id.props3.z=...

tenant.some-other-tenant-id.props2.x=...
我正在考虑添加另一个
@ConfigurationProperties
类,例如前缀
tenant
,并为每个现有类添加一个
Map
,其中键将是租户名称,例如:

@ConfigurationProperties("tenant")
class TenantSpecificProps {
   private Map<String, Props1> props1;
   private Map<String, Props2> props2;
   private Map<String, Props3> props3;
   ...
}
@ConfigurationProperties(“租户”)
类租户指定操作{
私人地图道具1;
私人地图道具2;
私人地图道具3;
...
}
然而,我担心在映射中重用带有
@ConfigurationProperties
注释的类可能会导致以后的问题,因为这不是Spring中使用这些类的正常方式。此外,我还需要手动合并全局值和每个租户值(每个租户覆盖全局值)


这是一种有效的方法吗?或者有更惯用的方法吗?

对不起,我不清楚。也许你最好能解释一下你想实现什么,你担心什么问题?@贝特丽莎,我编辑了这个问题,希望我的意图更清楚吗?为什么不为每个租户运行一个实例,并使用SpReBooGoD配置文件来加载“重写”。配置?您可以使用这种体系结构->@Ralf这就是我现在正在做的,但随着更多租户的加入,我们希望通过删除实例到租户的1-1映射来节省资源。
@ConfigurationProperties("tenant")
class TenantSpecificProps {
   private Map<String, Props1> props1;
   private Map<String, Props2> props2;
   private Map<String, Props3> props3;
   ...
}