springboot开发日记(9)——YAML配置文件

YAML——适合用来做以数据为中心的配置文件

基本语法

  • 使用缩进表示层级关系。
  • 缩进时不允许使用 Tab 键,只允许使用空格。(实际使用idea开发中,Tab也有效)
  • 缩进的空格数不重要,但同级元素必须左侧对齐。
  • 大小写敏感。
  • “#”表示注释

基础回顾:java中的数据类型

  • 字面量:单个的、不可再分的值。date、boolean、string、number、null
  • 对象:键值对的集合,如map、hash、set、object
  • 数组:一组按次序排列的值:array、list、queue

在 YAML 中,使用“key:[空格]value的形式表示一对键值对(空格不能省略)

对不同的数据类型,表示方法也不一样

字面量:k: v

对象

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

数组

行内写法:  k: [v1,v2,v3]
#或者
k:
 - v1
 - v2
 - v3

示例

建立Person类

@ConfigurationProperties(prefix = "person")
@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;
}

Pet类

@Data
public class Pet {
    private String name;
    private Double weight;
}

同时在Resources下建立application.yaml文件

person:
  userName: zhangsan
  boss: true
  birth: 2017/01/01
  age: 30
  interests:
    - 篮球
    - 足球
  animal: [cat,dog]
  score:
    english: 80
    math: 90
  salarys:
    - 9999.98
    - 9999.99
  pet:
    name: xxx
    weight: 100
  allPets:
    sick:
      - {name: aaa,weight: 999.9}
      - name: bbb
        weight: 100.9
      - name: ccc
        weight: 200.9
    health:
      - name: ddd
        weight: 300

在HelloController.java中添加以下代码

@Autowired
    Person person;
@RequestMapping("/person")
public Person person(){
    return person;
}

其中@Autowired从容器中拿出person实例。

在MainApplication.java中运行SpringApplication.run(MainApplication.class,args);

发现输出了yaml文件中定义的各个属性。

我们可以看到,使用yaml文件可以使属性配置层级清晰,更有条理,并且在后续如果需要配置第三方包的属性时不需要重复冗长的前缀。


字符串里单双引号的区别

在yaml文件中单双引号有不同的作用:

单引号会转义,双引号不会转义(相对于转义字符)

看上去有点绕弯,实际上就是在双引号中的转义字符会正常发挥作用,例如

person:
  userName: "zhangsan /n lisi"

系统最后输出的结果是

zhangsan
lisi

而单引号则不同

person:
  userName: 'zhangsan /n lisi'

系统最后输出的结果是

zhangsan /n lisi

 经过测试,不加引号的结果与加单引号相同


自定义的类一般是不出现绑定提示的,我们可以通过查阅官方文档找到官方提供的依赖——springbootconfigurationprocessor来进行这方面功能的实现。

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-configuration-processor</artifactId>
  <optional>true</optional>
</dependency>

在pom配置文件中添加后重启项目就可以实现yaml文件中出现绑定提示。

posted @ 2023-02-09 16:47  YTARO  阅读(134)  评论(0编辑  收藏  举报