如何将配置对象映射到java对象

时间:2016-09-28 07:40:53

标签: spring-boot spring-cloud-config

我有一个使用spring cloud配置的spring启动应用程序。 如何使用某个java对象映射配置元素。

我的配置是这样的:

clients:
- id         : 1
  name: client 1
  groups    : [a,b]

- id         : 2
  name: client 2
  groups    : [a]

我的java对象是:

public class ClientInfo {
  private String clientId;
  private List<String> profiles;

  public ClientInfo(String clientId, List<String> pips) {
    this.clientId = clientId;
    this.profiles = pips;
  }
  public String getClientId() {
    return clientId;
  }

  public void setClientId(String clientId) {
    this.clientId = clientId;
  }

  public List<String> getProfiles() {
    return profiles;
  }

  public void setProfiles(List<String> profiles) {
    this.profiles = profiles;
  }
}

我想用List

映射我的配置

2 个答案:

答案 0 :(得分:1)

使用以下代码将配置属性配置为java Object,

@Component
@EnableConfigurationProperties
@ConfigurationProperties(prefix = "clients")
public class ClientInfo {

private String id;
private String name;
private List<String> groups;

public String getId(){ return id;}

public String getName(){ return name;}

public List<String> getGroups(){ return groups;}

}

检查以下内容,例如http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html

在另一个类中注入此类:

@Autowired
private ClientInfo clientInfo;

如果使用“new operator”实例化类,则上述自动布线将不起作用。

答案 1 :(得分:0)

实际上我找到了它无法正常工作的原因。 所需要的只是拥有另一个包含ClientInfo列表的类,并在其上包含@EnableConfigurationProperties和@ConfigurationProperties注释。这是因为&#34;客户&#34;在我的配置是一个列表。在此更改之后,我们可以使用@Autowired注释来注入配置。