我有一个使用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
映射我的配置答案 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注释来注入配置。