如何将配置对象映射到 java 对象
How to map configuration objects to java object
我有一个 spring 启动应用程序,它使用 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;
}
}
我想用列表映射我的配置
使用下面的代码将配置属性配置到 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
将此 class 注入另一个 class :
@Autowired
private ClientInfo clientInfo;
如果 class 使用 "new operator" 实例化,上述自动连接将不起作用。
实际上我找到了它不起作用的原因。
所需要的只是拥有另一个 class,其中包含一个 ClientInfo 列表,并在其上添加 @EnableConfigurationProperties 和 @ConfigurationProperties 注释。这是因为 "clients" 在我的配置中是一个列表。更改后我们可以使用@Autowired 注解来注入配置。
我有一个 spring 启动应用程序,它使用 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;
}
}
我想用列表映射我的配置
使用下面的代码将配置属性配置到 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
将此 class 注入另一个 class :
@Autowired
private ClientInfo clientInfo;
如果 class 使用 "new operator" 实例化,上述自动连接将不起作用。
实际上我找到了它不起作用的原因。 所需要的只是拥有另一个 class,其中包含一个 ClientInfo 列表,并在其上添加 @EnableConfigurationProperties 和 @ConfigurationProperties 注释。这是因为 "clients" 在我的配置中是一个列表。更改后我们可以使用@Autowired 注解来注入配置。