1、文件类型

1.1、propreties

1.2、yaml

1.2.1、简介

YAML 是 “YAML Ain’t Markup Language”(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:”Yet Another Markup Language”(仍是一种标记语言)。

  • 标记语言:标签
  • 比xml, 语法更简洁,更轻量级

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

1.2.2、基本语法

  • key: value;kv之间有空格
  • 大小写敏感
    • userName == user-name
  • 使用缩进表示层级关系
  • 缩进不允许使用tab,只允许空格
    • 只能使用空格,idea会自动把tab换成空格
  • 缩进的空格数不重要,只要相同层级的元素左对齐即可
  • ‘#’表示注释
  • 字符串无需加引号,如果要加,’’与””表示字符串内容 会被 转义/不转义
    • 如\n,单引号中作为字符串输出,双引号会换行
    • 如果字符串为一段数字,该数字以零开头,必须添加上”” 不然Springboot会将数字解析成八进制

若是同时存在xml和yaml的话,优先默认生效xml

1.2.3、数据类型

  • 字面量:单个的、不可再分的值。date、boolean、string、number、null
  1. k: v
  • 对象:键值对的集合。map、hash、set、object
  1. 行内写法: k: {k1:v1,k2:v2,k3:v3}
  2. #或
  3. k:
  4. k1: v1
  5. k2: v2
  6. k3: v3
  • 数组:一组按次序排列的值。array、list、queue
  1. 行内写法: k: [v1,v2,v3]
  2. #或者
  3. k:
  4. - v1
  5. - v2
  6. - v3

1.2.4、示例

  1. @Data
  2. public class Person {
  3. private String userName;
  4. private Boolean boss;
  5. private Date birth;
  6. private Integer age;
  7. private Pet pet;
  8. private String[] interests;
  9. private List<String> animal;
  10. private Map<String, Object> score;
  11. private Set<Double> salarys;
  12. private Map<String, List<Pet>> allPets;
  13. }
  14. @Data
  15. public class Pet {
  16. private String name;
  17. private Double weight;
  18. }
  1. # yaml表示以上对象
  2. person:
  3. userName: zhangsan
  4. boss: false
  5. birth: 2019/12/12 20:12:33
  6. age: 18
  7. pet:
  8. name: tomcat
  9. weight: 23.4
  10. interests: [篮球,游泳]
  11. animal:
  12. - jerry
  13. - mario
  14. score:
  15. english:
  16. first: 30
  17. second: 40
  18. third: 50
  19. math: [131,140,148]
  20. chinese: {first: 128,second: 136}
  21. salarys: [3999,4999.98,5999.99]
  22. allPets:
  23. sick:
  24. - {name: tom}
  25. - {name: jerry,weight: 47}
  26. health: [{name: mario,weight: 47}]

2、配置提示

自定义的类和配置文件绑定一般没有提示。

  • 如果配置了configuration-processor后还是,且build project依旧不生效,则可执行mvn clean install -Dmaven.test.skip
  • 比如自己定义的一个类使用yml配置文件进行配置是不会出属性字段的提示的,也就是都要自己输入。但是我们加入这个依赖就可以有提示了。下面的一段放在maven里的插件,作用是打包的时候不用把上面这个工具依赖打包到环境中。
  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-configuration-processor</artifactId>
  4. <optional>true</optional>
  5. </dependency>
  6. <build>
  7. <plugins>
  8. <plugin>
  9. <groupId>org.springframework.boot</groupId>
  10. <artifactId>spring-boot-maven-plugin</artifactId>
  11. <configuration>
  12. <excludes>
  13. <exclude>
  14. <groupId>org.springframework.boot</groupId>
  15. <artifactId>spring-boot-configuration-processor</artifactId>
  16. </exclude>
  17. </excludes>
  18. </configuration>
  19. </plugin>
  20. </plugins>
  21. </build>