yml和properties
yml和properties
都属于SpringBoot的配置文件,他是一个全局作用的文件,文件名是固定的。
作用
·可以用来修改SpringBoot中由于自己自动配置的默认值,并且当你在这里边配置完成后,SpringBoot会在底层自动给我们将这些修改参数配置好。
yml和properties的语法大致一样,只是在表达上可能或有区别
1、yml的基本语法
①他使用键值对来表示:key:【空格】value的形式;
②他以空格的缩进来表示配置中的层级关系,只要是对齐的数据默认为同一级;
③他对于属性和值的大小写是敏感的。
2、值的写法
①字面量值的写法
普通的值(数字、字符串、Boolean)
表示:k: v--------如果是字面量的话直接写
-----------------------对于字符串来说,默认都不需要加上单引号和双引号
注意:如果使用双引号,则他表示不会转义字符串,里边的特殊字符都会作为他自己本身的含义来实现,例如:
name:“张三 \n 很帅”:输出结果为
张三
很帅
在这里将\n转义为它本身的意思为换行
如果使用单引号,不会转义特殊字符,特殊字符最终只是普通的字符串输出
例如:
name:‘张三 \n 很帅’
输出结果:张三 \n很帅
这就是区别。
②对象、Map(属性和值)(键值对)
表示: k: v
在下一行来写对象和值的关系,注意缩进就行。
cat:
name: 九灵夜猫
age: 1
对象写法的另一种方式:
cat: {
name:九灵夜猫, age: 1}
③数组(list、set)
使用‘-值’来表示数组中的一个元素
pets:
-cat
-xiaoji
-dog
他还有另一只写法:
pets: [cat,xiaoji,dog]
我们现在来写一个例子
1、首先创建JavaBean
@Component
@ConfigurationProperties(prefix = "school")
public class School {
private String address;
private Date year;
private BigDecimal size;
private Map<String, Object> maps;
private List<Object> objectList;
private Grade grade;
2、yml配置数据值
school:
address: 江南
year: 1966/6/22
size: 1500.3
maps:
m1: 20
m2: 568
objectList:
- qinghua
- beida
grade: {
num: 8,mathTeach: zhangsan}
3、测试
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringBootHelloWorld.class)
public class ymlDemoTest {
@Autowired
private School school;
@Test
public void test(){
System.out.println(school.toString());
}
}
4、结果
School{
address='江南', year=Wed Jun 22 00:00:00 CST 1966, size=1500.3, maps={
m1=20, m2=568}, objectList=[qinghua, beida], grade=Grade{
num=8, mathTeach='zhangsan'}}
properties
school.address=jiangnan
school.size=20
school.year=2022/6/3
school.grade.num=12
school.grade.mathTeach=zhangsan
school.maps.m1=1
school.maps..m2=2
school.object-list=111,222,333
运行结果
School{
address='jiangnan', year=Fri Jun 03 00:00:00 CST 2022, size=20, maps={
m1=1, m2=2}, objectList=[111, 222, 333], grade=Grade{
num=12, mathTeach='zhangsan'}}