spring boot读取application.yml文件中的属性值
spring boot版本为1.5.10.RELEASE
1.在application.yml
文件内容
foo:
remote-address: 192.168.1.1
security:
username: foo
roles:
- USER
- ADMIN
2.创建FooProperties.java
文件,并使用@ConfigurationProperties
注解
@Component
@ConfigurationProperties(prefix = "foo")
public class FooProperties {
private InetAddress remoteAddress;
private final Security security = new Security();
public InetAddress getRemoteAddress() {
return remoteAddress;
}
public void setRemoteAddress(InetAddress remoteAddress) {
this.remoteAddress = remoteAddress;
}
public Security getSecurity() {
return security;
}
public static class Security{
private String userName;
private List<String> roles = new ArrayList<>(Collections.singleton("USER"));
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public List<String> getRoles() {
return roles;
}
public void setRoles(List<String> roles) {
this.roles = roles;
}
@Override
public String toString() {
return "Security{" +
"userName='" + userName + '\'' +
", roles=" + roles +
'}';
}
}
}
3.测试
@RestController
public class HelloWorldController {
@Autowired
private FooProperties fooProperties;
@RequestMapping("/getFooProperties")
public Map<String, Object> getFooProperties(){
Map<String, Object> map = new HashMap<>();
map.put("remote-address", fooProperties.getRemoteAddress());
map.put("security", fooProperties.getSecurity().toString());
return map;
}
}
访问http://localhost:8080/getFooProperties
返回结果,和application.yml
文件中的一样:
{
"security": "Security{userName='foo', roles=[USER, ADMIN]}",
"remote-address": "192.168.1.1"
}