官方文档:yaml.org/
Java操作yaml:www.cnblogs.com/strongmore/…
yaml 基本语法
- 形式为 key: value;注意: 后面有空格
- 区分大小写
- 使用缩进表示层级关系
- 缩进不允许使用 tab,只允许空格 [有些地方也识别 tab , 推荐使用空格]
- 缩进的空格数不重要,只要相同层级的元素左对齐即可
- 字符串无需加引号
- yml 中, 注释使用 #
数据类型
字面量
- 字面量:单个的、不可再分的值。date、boolean、string、number、null
- 保存形式为 key: value
对象
对象:键值对的集合, 比如 map、hash、set、object
行内写法:
k: {k1:v1,k2:v2,k3:v3}
monster: {id: 100,name: 牛魔王}
换行形式
k:
k1: v1
k2: v2
k3: v3
monster:
id: 100
name: 牛魔王
数组
数组:一组按次序排列的值, 比如 array、list、queue
行内写法:
k: [v1,v2,v3]
hobby: [打篮球, 打乒乓球, 踢足球]
换行格式
k:
- v1
- v2
- v3
hobby:
- 打篮球
- 打乒乓球
- 踢足球
yaml 应用实例:使用 yaml 配置文件 和 JavaBean 进行数据绑定
例如:
@ConfigurationProperties(prefix = "monster")//与yaml配置文件中的monster进行数据绑定
@Component
@ToString
@Data
public class Monster {
private Integer id;
private String name;
private Integer age;
private Boolean isMarried;
private Date birth;
private Car car;
private String[] skill;
private List<String> hobby;
private Map<String, Object> wife;
private Set<Double> salaries;
private Map<String, List<Car>> cars;
}
yaml 使用细节
-
如 果 application.properties 和 application.yml 有 相 同 的 前 缀 值 绑 定 , 则application.properties 优先级高, 开发时,应当避免
-
字符串无需加引号, 如果你用" " 或者 ' ' 包起来, 也可以。
-
解决 yaml 配置文件,不提示字段信息问题:
1). 在 pom.xml 加 入 spring-boot-configuration-processor 依 赖:
<!-- 引入 yaml 文件提示, 可以看到 JavaBean 字段提示 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>2). 如果还没有提出提示, 可以在ide里搜索安装一个 yaml 插件来搞定。
web静态资源访问
如果你配置 static-locations, 原来的访问路径就被覆盖,如果需要保留,你再指定一下即可
在资源目录resources下创建application.yml配置文件,进行静态资源相关配置。
spring:
mvc:
static-path-pattern: /hspres/** #修改静态资源访问的路径/前缀
hiddenmethod:
filter:
enabled: true #开启页面表单的 Rest 功能 #启用了HiddenHttpMethodFilter,支持rest
view: #配置视图解析器
suffix: .html
prefix: / #这里是需要注意 prefix 需要和当前的 static-path-pattern 一致
web:
resources: #修改/指定 静态资源的访问路径/位置
static-locations: ["classpath:/hspimg/","classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/"]