问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

yaml格式配置文件书写语法

创作时间:
作者:
@小白创作中心

yaml格式配置文件书写语法

引用
CSDN
1.
https://blog.csdn.net/qq_38186465/article/details/139320514

YAML(YAML Ain't Markup Language)是一种人类可读的数据序列化语言,常用于配置文件。本文将详细介绍YAML的基本语法、数据类型,并通过一个具体的SpringBoot配置示例,帮助读者掌握YAML配置文件的书写方法。

SpringBoot配置文件–yaml用法

一.基本语法

  • key: value(ps:key和value之间是必须要有空格的)
  • 大小写敏感
  • 使用缩进表示层级关系
  • 缩进不允许使用tab,只允许空格 (ps:用idea开发时,用tab好像也没有太大影响)
  • 缩进空格数不重要,只要相同层级元素左对齐即可
  • #表示注释
  • '",单引号和双引号表示字符串内容分别表示 转义 和不转义

二.数据类型

字面量: 单个的、不可再分的值。如date,boolean,String,number,null

key: value  

对象:键值对的集合。如map、hash、set、object

行内写法:
k: {k1: v1,k2: v2,k3: v3}
或用如下写法:
k:
 k1: v1
 k2: v2
 k3: v3  

数组:一组按次序排列的值。如array、list、queue

行内写法:
k: [v1,v2,v3]
或用如下写法:
k:
- v1
- v2
- v3  

三.示例

以下有一个Person类对象,使用配置文件的方式,给对象赋值。

@ConfigurationProperties(prefix = "person") //让组件同配置文件中的key值为person相绑定
@Component //在容器中创建一个组件
@Data
public class Person {
    private String userName;
    private Boolean boss;
    private Date birth;
    private Integer age;
    private Pet pet;
    private String [] interests;
    private List<String> animal;
    private Map<String,Object>score;
    private Set<Double> salarys;
    private Map<String,List<Pet>>allPets;
}
@Data
public class Pet {
    private String name;
    private Integer age;
}  

现在通过yaml文件来配置Person对象的值,yaml配置文件后缀可以用.yaml或者是.yml。

person:
 username: 张三
 boss: true
 birth: 2000/02/02
 age: 18
# 行内写法:
# interest: [羽毛球,游泳]
 interest:
- 羽毛球
- 游泳
 animal: [猫猫,狗狗]
 score:
  english: 80
  math: 100
# 行内写法:
# score: {english:80,chinese:100}
 salary:
- 9999
- 8888
 pet:
  name: 崽崽
  age: 3
 allPets:
  stick:
- {name:狗1}
- {name:狗2,age:1}
  health: [{name:兔1,age:5}]  

编写测试的Control类,该类是返回配置类实例对象person的值。

@RestController
public class HelloController {
    @Autowired
    private Person person;
    @RequestMapping("/person")
    public Person returnPerson(){
        return person;
    }
}  

在网页中输入http://localhost:8080/person,可看到输出内容。

在测试过程中,可能会报如下ava.nio.charset.MalformedInputException: Input length = 1错误。可能是因为yaml配置文件中语法有问题,或者是中文编码存在问题(更多的是中文的问题)。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号