# 关于 YAML
中 List
存放 Map
# YAML
如何书写
YAML
语法
1 2 3 4
| 大小写敏感 使用缩进表示层级关系 缩进时不允许使用Tab键,只允许使用空格。 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
|
支持的数据结构
1 2 3
| 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary) 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list) 基本类型:单个的、不可再分的值
|
基本语法
k:
(空格) v:
表示一对键值对
v:
包含上面举的数据
k;string
类型
value
的使用说明
-
基本类型:数字,字符串,布尔
k: v:
字面直接来写;
- 字符串默认不用加上单引号或者双引号;
-
""
:双引号:不会转义字符串里面的特殊字符;
- 特殊字符会作为本身想表示的意思;
- 如 :
name: "zhangsan \n lisi":
输出; zhangsan
换行 lisi
-
''
:单引号:转义特殊字符
- 特殊字符终只是一个普通的字符串数据 ,
- 如:
name: ‘zhangsan \n lisi’:输出;zhangsan \n lisi
对象、Map(属性和值)(键值对):
1 2 3 4 5 6
| k: v:在下一行来写对象的属性和值的关系;注意缩进对象还是k: v的方式
friends: lastName: zhangsan age: 20
|
数组( List、Set
):
用 - 值表示数组中的一个元素
1 2 3 4 5
| pets: ‐ cat ‐ dog ‐ pig
|
# yml
的使用
yml
文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| spring: test: 小猪 testList: - name: 小王 age: 12 - name: 小李 age: 13 testMap: name: 小朱 age: 14 testname: 小明
|
# 使用 @Value
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
@Component @Data public class ValueTest {
@Value("小李") private String name;
@Value("1") private int num;
@Value("${spring.testMap.name}") private String name2;
@Value("${spring.test}") private String name1; private Map<String,String> map;
@Value("#{1+1}") private int num1; }
|
进行测试 Test
:
1 2 3 4 5 6 7
| @Autowired private ValueTest valueTest; @Test public void test111(){ System.out.println(valueTest); }
|
# 使用 @ConfigurationProperties
1 2 3 4 5
| <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring‐boot‐configuration‐processor</artifactId> <optional>true</optional> </dependency>
|
1 2 3 4 5 6 7 8 9 10 11 12
| @Data @Component @ConfigurationProperties(prefix = "spring") @Validated public class TestConfigurationProperties { private List<Map> testList; private Map<String,String> testMap;
private String name;
private String test; }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| @Autowired private TestConfigurationProperties testConfigurationProperties;
@Test public void test8(){ System.out.println(testConfigurationProperties.getTestMap()); System.out.println(testConfigurationProperties.getTestList()); System.out.println(testConfigurationProperties.getName()); System.out.println(testConfigurationProperties.getTest());
}
|