主要分为.properties和.yml/.yaml两种类型,效果相同,.properties就是键值对,如:
以下主要关于.yml/.yaml配置文件的介绍。
一、yml配置文件简介
相对于xml文件,yml文件更加简洁(没有过多标签),也更加容易阅读,可以被多种编程语言导入。扩展名为.yml或者.yaml。
注:SpringBoot配置的读取配置文件的顺序是:
换句话说,.properties文件的优先级就会比.yml文件更高,后读取的.properties文件中如果有与先读取的.yml文件中相冲突的配置项,则.properties的配置会覆盖.yml的配置,但一般我们只需要在一种文件中配置即可。
二、yml配置文件语法
yml文件中主要是通过空格和回车来控制层级关系。
1、配置普通数据
name: zhangsan
2、配置对象数据
person:
name: zhangsan
age: 18
addr: beijing
server:
port: 8081
或
user: {username: admin,password: 123456}
一般第一种较常用。
3、配置数组或集合数据
普通字符串:
city:
- beijing
- tianjin
- shanghai
对象数据:
student:
- name: jack
age: 18
- name: lucy
age: 17
4、map配置,与对象配置语法一样
map:
key1: value1
key2: value2
三、从yml配置文件中获取信息
1、通过@Value注解获取:
@Controller
public class BootController1 {
@Value("${name}")
private String name;// 获取普通数据
@Value("${person.age}")
private String age;// 获取对象数据
@RequestMapping("/testyml")
@ResponseBody
public String testYml() {
return "name: " + name + ",age: " + age;
}
}
2、通过@ConfigurationProperties注解获取对象信息:
//获取对象数据的第二种方式
@Controller
//这里前缀写person是因为在yml文件中对象名为person,
//而name和age都是person中的属性
@ConfigurationProperties(prefix = "person")
public class TestYmlController2 {
private String name;
private String age;
@RequestMapping("/testyml2")
@ResponseBody
public String testYml() {
return "name: " + name + ",age: " + age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
注:使用@ConfigurationProperties注解IDEA会报警告,其实不会影响项目运行,但是我们可以通过加:
<!--@ConfigurationProperties注解的执行器的配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
来解决警告。另外,我们添加这个包后在配置文件中就会有提示功能了。