0

我有一个使用 Spring Cloud 配置的 Spring Boot 应用程序。我如何将配置元素映射到一些 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 映射我的配置

4

2 回答 2

1

使用下面的代码将配置属性配置到 java 对象中,

@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”实例化类,则上述自动连接将不起作用。

于 2016-09-28T08:03:11.523 回答
0

实际上我找到了它不起作用的原因。所需要的只是拥有另一个包含 ClientInfo 列表并在其上具有 @EnableConfigurationProperties 和 @ConfigurationProperties 注释的类。这是因为我的配置中的“客户”是一个列表。在此更改之后,我们可以使用 @Autowired 注解来注入配置。

于 2016-10-05T20:25:14.917 回答