一、配置文件简单介绍

SpringBoot配置文件通常为如下三种,其中yml和yaml类似:

application.properties
 application.yaml
 application.yml

为什么要使用上面的配置文件。

我们在使用第三方技术的时候,如果将相关参数硬编码,是可以正常运行的,但当参数需要改动的

时候就会变得很繁琐,不方便管理,例如当参数发生改动时:

1、我们要从项目中众多类当中定位到需要修改参数的位置(繁琐)。

2、必须对源代码进行修改,重新编译运行(这个过程还可能会出错)。

所以,可以将一些配置信息丢到配置文件里面,进行统一管理。

二、简单读取使用示例

下面展示两种简单读取的示例:

        1、通过@ConfigurationProperties注解读取配置文件使用

1、在配置文件里面设置要放置的参数
yml和yaml中格式是这样的:
 Dog:
   pro:
     name: 小狗
     age: 18 properties中格式是这样的:
 Dog.pro.name: 小狗
 Dog.pro.age: 18
2、使用@ConfigurationProperties读取配置参数
 @Data
 @Component
 @ConfigurationProperties(prefix = "dog.pro")
 public class Dog {
     private String name;
     private String age;
 } 3、测试 打印 dog 值为:Dog(name=小狗, age=18)
 @SpringBootTest
 public class TestDog {
     @Autowired
     private Dog dog;
     @Test
     public void printDog() {
       System.out.println(dog);
     }
 }

        2、通过@value注解读取配置文件

用value读取,其他如上代码不变,结果相同
 @Data
 @Component
 public class Dog {
     @Value("${Dog.pro.name}")
     private String name;
     @Value("${Dog.pro.age}")
     private Integer age;
 }

注意点:

1、springboot对于这三个配置文件的读取顺序为yml 、ymal、properties,如果在不同类型配置文

件对同个属性对象设定值,那么后读取的配置文件会把前面设定的值给覆盖掉,比如上面的例子如

果properties和yml配置文件都存在,properties将Dog的name设定为小狗,yaml将name设定为小

猪,最后的结果是小狗会将小猪给覆盖掉;

2、@ConfigurationProperties需要和@Component注解一起使用,不然可能会报错。

3、配置文件读取中文出现乱码,可以去设置编码格式。

4、@value和@ConfigurationProperties有区别。@ConfigurationProperties语法比较松散,比如可

以下划线转驼峰匹配,配置文件中 dog-name 可以被读取到类属性 dogName中等,而@value不

行。

5、可以再建个application-dev.yml,开发环境的配置,将application.yml中数据放入application-dev.yml,方便软件环境变换切换配置文件。

//application.yml
 dog:
     pro:
       name: ${dog.name}
       age: ${dog.age}
       
 //application-dev.yml
   dog:
      name: 小
      age: 18