一,前言
最近在做项目的时候,用到了读取配置文件这个功能,发现网上的博客读取配置文件的方式有很多种,但是由于时间不一致,导致读取文件的方式也不同,这里列出我个人觉得比较好的方法来,就像跟使用常量一样,直接可以把配置文件的属性通过 点 来获取。
二,具体操作
第一步,先看配置文件
oyj:
name: oujiji
age: 18
我这个是yml的配置文件,通过一种key-value的形式来配置,而且在结构上更加有层次感。我们的目标就要是读取name和age这两个值
第二步,编写读取配置文件
@ConfigurationProperties(prefix = "oyj")
@Component
public class TestConfig {
public static String name;
public static String age;
public String getName(){
return TestConfig.name;
}
public void setName(String name){
TestConfig.name = name;
}
public String getAge(){
return TestConfig.age;
}
public void setAge(String age){
TestConfig.age = age;
}
}
使用@ConfigurationProperties注解来读取配置文件,这个prefix就是配置文件里要读取内容的前缀。这里有个地方要注意一下,就是这个注解要和@Component注解一起使用,否则是会报错的。
因为最终目标是通过 类名.属性名 来使用,所以属性我是使用静态的。这里也有一个小坑,这里的属性不能用lombok工具来自动生成属性,否则是会获取不到的,具体是什么原因还没搞清楚,如果有大佬知道了请指教一下。
第三步,测试获取的属性
@SpringBootApplication(scanBasePackages = "vip.msmhk",exclude = {DataSourceAutoConfiguration.class})
public class UploadApplication {
public static void main(String[] args) {
SpringApplication.run(UploadApplication.class, args);
System.out.println(TestConfig.age);
System.out.println(TestConfig.name);
}
}
我这里是直接在启动类里用一个属性的读取了。
最后,可以看到属性正确的读取出来了。