首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@ConfigurationProperties的多个前缀

@ConfigurationProperties的多个前缀
EN

Stack Overflow用户
提问于 2020-09-15 07:56:41
回答 3查看 4.3K关注 0票数 2

我有一个包含以下内容的application.properties文件。

代码语言:javascript
复制
server.name
server.id
server.ipadd

我正在使用下面的注释在configProperties.java中读取

代码语言:javascript
复制
@ConfigurationProperties(prefix = "server")
private String name;
private String ipadd;

现在我已经包括了额外的财产。

代码语言:javascript
复制
server.client.type
server.client.location

想要读这些新的属性。如何在同一个configProperties.java文件中读取这些文件?寻找类似以下格式,其中包括多个前缀,我知道这些是无效的。

代码语言:javascript
复制
 @ConfigurationProperties(prefix = "server", prefix = "server.client")
or
@ConfigurationProperties(prefix = "server")
@ConfigurationProperties(prefix = "server.client")
EN

回答 3

Stack Overflow用户

发布于 2020-09-15 08:23:16

您需要创建一个新的类,如

代码语言:javascript
复制
public class ClientProperties {
   private String type;
   private String location;
}

在以服务器为前缀的配置中,添加它。

代码语言:javascript
复制
private String name;
private String ipadd;
private ClientProperties client;
票数 2
EN

Stack Overflow用户

发布于 2021-04-28 21:07:59

下面是你想要做的事情的一个例子。

代码语言:javascript
复制
@Configuration
public class MultipleConfigPrefixExample {
  @Bean
  @ConfigurationProperties(prefix = "config.first.part")
  public FirstPart getFirstPart(){
    return new FirstPart();
  }

  @Bean
  @ConfigurationProperties(prefix = "info.another.part")
  public AnotherPart getAnotherPart(){
    return new AnotherPart();
  }

  @Getter
  @Setter
  public static class FirstPart {
    private String element1;
    private String element2;
  }


  @Getter
  @Setter
  public static class AnotherPart {
    private String element1;
    private String element2;
  }
}

注释@Getter @Setter来自lombok。

票数 1
EN

Stack Overflow用户

发布于 2020-12-31 20:09:57

回答你的问题

configProperties.getClientProperties().getLocation()

我不得不处理类似的事情,您可以将这个调用封装在ConfigProperties类中,如下所示:

代码语言:javascript
复制
@ConfigurationProperties
public ConfigProperties{
    private String name;
    private String ipadd;
    private ClientProperties client;
    public static class ClientProperties {
       private String type;
       private String location;
    }
    public String getType(){return client.getType();}
}

因此,您的内部结构是正确的,但您可以从顶级类访问属性。在我的例子中,我使用的是生成的git属性,这些属性无法重新格式化,这比重新生成文件更容易。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63897490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档