Springboot的全局配置文件分为两种
- application.properties
- application.yml或者application.yaml
当两种同时存在的时候,以.properties配置文件为准
application.properties(默认的配置文件)
- 语法:key=value
application.yml配置文件
- 语法:K:(空格)V 标识一对键值对,以空格的缩进来控制层级关系只要是左对齐的一列数据,都是同一层级的
- yaml
AML (YAML Ain’t a Markup Language)YAML不是一种标记语言,通常以.yml为后缀的文件,以数据为中心。是一种直观的能够被电脑识别的数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入,一种专门用来写配置文件的语言。
yaml其它数据类型值的写法:
- 普通值:
k: v 字面量直接来写,字符串默认不用添加单引号或者双引号
" " 双引号不会转义字符串里面的特殊字符
student:
name: "zhang \n san" # 输出zhang 换行 san
''单引号会转义字符,特殊字符最终是一个普通的字符串
student:
name: 'zhang \n san' # 输出zhang \n san
- 对象写法
# 定义一个学生对象
studnet:
name: 晓明
age: 18
# 对象的行内写法
student: {name: 晓明, age: 18}
- map写法
map:
k1: v1
k2: v2
#{k1:v1,k2:v2}
- 数组写法
Animal:
- dog
- pig
- cat
# 数组的行内写法
Animal: [dog, pig, cat]
属性绑定
编写一个Teach类
@Data
public class Teach {
private String name;
private Integer age;
private Date birthday;
private Boolean boss;
private Map<String, String> map;
private List<Student> studentList;
private Car car;
}
@Data
public class Student {
private String name;
private Integer age;
}
@Data
public class Car {
private String brand;
private String colour;
}
application.yml配置内容
teach:
name: 王教授
age: 38
birthday: 2023/08/28
boss: false
map:
k1: v1
k2: v2
#{k1:v1,k2:v2}
studentList:
- name: 赵四
age: 20
- name: 王二
age: 23
car:
brand: 法拉利
colour: 黑色
- 将yaml配置文件的内容映射到Teach类上面
@Data
@Component
@ConfigurationProperties(prefix = "teach")
public class Teach {
private String name;
private Integer age;
private Date birthday;
private Boolean boss;
private Map<String, String> map;
private List<Student> studentList;
private Car car;
}
- 测试
@SpringBootTest
public class SpringbootApplicationTest {
@Resource
private Teach teach;
@Test
public void test01(){
System.out.println(teach);
}
}
运行结果:
application.properties配置内容
teach.name=张教授
teach.age=35
teach.birthday=2023/08/28
teach.boss=false
teach.map.k1=v1
teach.map.k2=v2
teach.studentList.[0].name=张三
teach.studentList.[0].age=25
teach.studentList.[1].name=李四
teach.studentList.[1].age=25
teach.car.brand=宝马
teach.car.colour=黑色
注意:当yml配置文件跟.properties同时存在会以.properties为准
- @ConfigurationProperties:默认是从全局配置文件中获取值,也就application.yml这个文件中获取值。如果做的配置很多,全局的配置文件就会特别大,为了方便管理。我会创建不同的配置文件定向管理不同的配置,这就会用到下面的注解
- @PropertySource:加载指定配置文件
- 在项目resource目录下创建一个teach.peoperties的配置文件
teach.name=李老师
teach.age=25
- 在代码上指定加载teach.peoperties配置文件
@Data
@Component
@ConfigurationProperties(prefix = "teach")
@PropertySource(value = "classpath:teach.properties")
public class Teach{
private String name;
private Integer age;
.....
}
- properties下中文会出现了乱码,在idea配置文件中进行如下配置即可:properties中文读取乱码:File->Settings->FileEncodings最底部选utf-8、Tranparent打上勾