1. SpringBoot读取配置属性常见的三种方式:
info:
address: url/adress
1. 1 @Value注解读取方式
@Component
public class InfoConfig1 {
@Value("${info.address}")
private String address;
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
1.2 @ConfigurationProperties注解读取方式
@Component
@ConfigurationProperties(prefix = "info")
public class InfoConfig2 {
private String address;
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
1.3 读取指定文件 @PropertySource+@Value注解读取方式
设如下配置文件在resource目录下的 config/application.yml
info:
address:url/adress
@Component
@PropertySource(value = { "config/application.yml" })
public class DBConfig1 {
@Value("${db.username}")
private String username;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
2. 以上读取配置注意点.
2.1 以上方式都需要将类加入spring容器中管理. 故不可在程序的调用链中手动new 对象.应当通过spring注入方式,来调用工具类的属性或方法.
2.2 静态属性只能通过set注入.因为静态属性属于类.类加载new的初始化对象被spring托管的执行顺序优先于@Value等读取配置.因此spring代理的对象是无法获取配置文件的值.但可在set注入中重新为静态属性赋值.(尽量不要用这种方式.因为对象的属性应当是无状态的,都应当交给spring管理)
2.3 注意配置文件环境. 测试环境和开发环境的文件配置不一样可能产生一些问题.
2.4 多模块开发.注意只能读取本模块的resource 配置文件!