yaml 语法(大小写敏感)
1.yaml语法的精髓在与对空格的使用,可谓使用得淋漓尽致。
yaml语法主要是K:(冒号后面是空格) V值的形式(注意空格的使用)
空格的另一个重要的使用时对配置文件的层级关系的控制,如:
server:
port: 8090
address: /hello -->这:后都有空格,空格也控制层级关系
2.yaml对不同类型的值的操作:(只要记得 空格是神奇的存在)
对于(数值、字符串、和布尔)对于配置的值是字符串,不用双引号和单引号,直接写就可以了,若使用双引号的话会将特殊字符转义,使用单引号则会原样输出,不会对
特殊字符转义
例如:name: "小二\n 过来"-------------------->会这样输出 小二 换行 过来
name: '小二\n 过来'--------------------->会这样输出 小二 \n 过来(没有变化)
对于K : V形式(对象、Map)键值对类型
方法一、对象和Map占一行,属性和值会在另一行
Person: name: lcaiqin age: 23
方法二、将所用配置写在一行里面
Person: {name: lcaiqin,age: 23}
//--->>注意空格的使用
对于数组(List,Set)
方法一、使用- value的形式。如:注意是- 空格 值
Pets: - dog - cat - pig
方法二、使用一行解决。注意是:冒号 空格
Pets: [cat,dog,pig]
三、yaml配置文件的值注入
在实体类中编写如下代码:
@Component //@ConfigurationProperties在Spring容器中运行需要组件的支持
@ConfigurationProperties(prefix = "person") //告诉SpringBoot的所有属性和配置文件映射起来。prefix = "person"指从配置文件的什么位置映射
public class Person {
//基本类型
private String name;
private Integer age;
private Boolean Boos;
//对象
private Cart cart;
private Map<String,Object> map;
//数组
private List<Object> list;
写法一、在application.yml中输入如下代码。
person:
name: 独而不孤
age: 23
Boos: true
cart:
name: 奥迪
color: 白色
map:
k1: v1
k2: v2
list:
- apple
- pear
- eat
写法二、在application.yml中输入如下代码。(一行元素搞定)
person:
name: 独而不孤
age: 23
cart: {name: 奥迪,color: 白色}
list: [apple,pear,eat]
map: {k1: v1,k2: v2}
Boos:true
四、application.properits配置文件注入
bean中代码:
//基本类型
@Value("${person.name}") //使用el表达式,从配置文件中取出
private String name;
@Value("${person.age}")
private Integer age;
private Boolean Boos;
application.propeerties代码:
person.age=23 person.boos=true person.cart.name=奥迪 person.cart.color=白色 person.name=独而不孤 person.map.k1=值1 person.map.k2=值2 person.list.list1=apple
运行效果:乱码
解决乱码:"File">>"Settings">>"Editor">>"File Encodings"

这样就可以了。
五、@Value和@ConfigurationProperties的比较(@ConfigurationPropertis要配合@Component)
@ConfigurationPropertis |
@Value |
|
功能上 |
对所有的属性进行注入值 |
一个一个注入值 |
语法复杂程度 |
简单(可以一行一个一元素) |
元素冗余 |
SpEL |
不支持 |
支持 |
JSR303数据校验 |
支持 |
不支持 |
复杂类型封装 |
支持 |
不支持 |
个人觉得(除了需要对个别的属性赋值之外)都建议使用@ConfigurationProperties
1.对JSR303数据校验
@Component
@ConfigurationProperties(prefix = "person")
@Validated -->加入此标签
public class Person {
//基本类型
@Email
private String name;
private Integer age;
private Boolean Boos;
运行效果




浙公网安备 33010602011771号