一个前缀的 Spring 多个 ConfigurationProperties

时间:2021-03-17 12:49:50

标签: spring spring-boot

我的 application.yml 中有以下结构

conf:
  a:
    prop1: abc
    prop2: abc
  b:
    prop3: abc

现在我想在一个 ConfigurationProperties 类中有配置 A,在另一个类中有配置 B。我可以这样做:

@ConfigurationProperties(prefix = "conf")
class A{
  Map<String, String> a;
}

还有另一个类:

@ConfigurationProperties(prefix = "conf")
class A{
  Map<String, String> b;
}

但现在我收到错误消息,说前缀重复。是否有可能拥有 @ConfigurationProperties(prefix = "conf.a")@ConfigurationProperties(prefix = "conf.b") 并以某种方式将所有这些属性加载到这样的地图中?

@ConfigurationProperties(prefix = "conf.a")
class A{
  Map<String, String> allProperties;
}

1 个答案:

答案 0 :(得分:0)

我的建议是这样做:

conf:
  a:
   config:
    prop1: abc
    prop2: abc
  b:
   config:
    prop3: abc

然后您就可以使用前缀了:

@ConfigurationProperties(prefix = "conf.a")
class A{
  Map<String, String> config;
}

@ConfigurationProperties(prefix = "conf.b")
class B{
  Map<String, String> config;
}