读取配置文件,注入属性为NULL-CSDN博客

340 阅读1分钟

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 配置文件!