Bye*_*Bye 6 java spring spring-boot
Spring Boot 2.0.0.RELEASE
我有属性类:
@Configuration
@ConfigurationProperties(prefix="person")
public class PersonProperties {
private AddressProperties addressProperties;
public AddressProperties getAddressProperties() {
return addressProperties;
}
public void setAddressProperties(final AddressProperties addressProperties) {
this.addressProperties = addressProperties;
}
public static class AddressProperties {
private String line1;
public String getLine1() {
return line1;
}
public void setLine1(final String line1) {
this.line1 = line1;
}
}
}
Run Code Online (Sandbox Code Playgroud)
并且application.yml:
person:
address:
line1: line1OfAddress
Run Code Online (Sandbox Code Playgroud)
它没有像我的AddressProperties对象那样正确绑定null。当一个类与 yml 属性具有相同的名称时AddressProperties->Address它运行良好。我试图添加Qualifier或ConfigurationProperties前缀,address但它不起作用。不幸的是,我在 spring 文档中找不到有关此案例的有用信息。
如何为嵌套属性指定前缀?
yaml/属性文件中定义的属性应与类中定义的变量匹配。将 yaml 文件更改为
person:
# addressProperties will also work here
address-properties:
line1: line1OfAddress
Run Code Online (Sandbox Code Playgroud)
或者将你的bean定义为
@Configuration
@ConfigurationProperties(prefix = "person")
public class PersonProperties {
// here variable name doesn't matter, it can be addressProperties as well
// setter / getter should match with properties in yaml
// i.e. getAddress() and setAddress()
private AddressProperties address;
public AddressProperties getAddress() {
return address;
}
public void setAddress(AddressProperties address) {
this.address = address;
}
}
Run Code Online (Sandbox Code Playgroud)
如果您想获取地址下的所有属性而不在单独的 bean 中定义它们,您可以将您的PersonProperties类定义为
@Configuration
@ConfigurationProperties(prefix = "person")
public class PersonProperties {
private Map<String, Object> address;
public Map<String, Object> getAddress() {
return address;
}
public void setAddress(Map<String, Object> address) {
this.address = address;
}
}
Run Code Online (Sandbox Code Playgroud)
这里PersonProperties#address将包含{line1=line1OfAddress}
现在,地址下的所有属性都将位于Map.
| 归档时间: |
|
| 查看次数: |
8653 次 |
| 最近记录: |