一、配置文件简单介绍
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