SpringBoot中YAML语法及几个注意点说明
YAML语法及几个注意点
yaml后缀名可以是.yml或者.yaml
对于语法注意的一点是固定的缩进来控制它的层级关系,它的key: value形式必须要要在中间有空格
实体类(setter,getter,toString省略)如下
@Component @ConfigurationProperties(prefix = "person") public class Person { private String lastName; private Integer age; private List<String> hobbies; private Map<String,Object> map; private Dog dog; }
在使用了@ConfigurationProperties注解过后idea会给你发出警告,可以不管,但是这样你在yml中配置时就没有提示功能,所以点进警告,这时你会发现可能出现网页找不到的情况,这时候你只需要将网址栏的版本降低即可,如下
将框中的内容放进pom,然后重新运行项目,在yaml中就会对你自己写的标注了@ConfigurationProperties的类有了代码提示功能
public class Dog { private String name; private Integer age; }
application.yml配置文件进行值的注入
person: last-name: 张三 age: 25 hobbies: - 篮球 - 跑步 - 吉他 map: {k1: 你好,k2: 世界} dog: name: 狗东西 age: 10
列表可以用上面的形式也可以用下面的形式,看清楚光标处有空格,对象类型就可以用{},如下面的Map
yaml的松散绑定
Java中lastName的驼峰命名法,yaml中可以用其他的形式来表示。如
last_name last-name lastName LASTNAME
首次玩这个如果想在测试类里面测试,有可能你会出现运行不了一直卡在Maven。。。的框里面,解决方案:我的错误收集笔记
YAML语法简易入门
可以查看官方或者其他的博客资料,会有一大堆的内容
YAML语言的设计参考了JSON,XML和SDL等语言。YAML 强调以数据为中心,简洁易读,编写简单。
有意思的命名:
AML全称是”YAML Ain’t a Markup Language”(YAML不是一种置标语言)的递归缩写。 在开发的这种语言时,YAML 的意思其实是:”Yet Another Markup Language”(仍是一种置标语言)。
语法特点
- 大小写敏感
- 通过缩进表示层级关系
- 禁止使用tab缩进,只能使用空格键 (个人感觉这条最重要)
- 缩进的空格数目不重要,只要相同层级左对齐即可
- 使用#表示注释
支持的数据结构
- 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
- 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
- 纯量(scalars):单个的、不可再分的值
双引号和单引号的区分
双引号"":不会转义字符串里面的特殊字符,特殊字符作为本身想表示的意思。
yamlname: "123\n123"
输出: 123 换行 123
如果不加引号将会转义特殊字符,当成字符串处理
值的写法
1.字符串
使用”或”“或不使用引号
yamlvalue0: 'hello World!' value1: "hello World!" value2: hello World!
2.布尔值
true或false表示。
3.数字
yaml12 #整数 014 # 八进制整数 0xC #十六进制整数 13.4 #浮点数 1.2e+34 #指数 .inf空值 #无穷大
4.空值
null或~表示
5.日期
使用 iso-8601 标准表示日期
yamldate: 2018-01-01t16:59:43.10-05:00
在springboot中yaml文件的时间格式 date: yyyy/MM/dd HH:mm:ss
6.强制类型转换(了解)
YAML 允许使用个感叹号!,强制转换数据类型,单叹号通常是自定义类型,双叹号是内置类型。
yamlmoney: !!str 123 date: !Boolean true
内置类型列表
yaml!!int # 整数类型 !!float # 浮点类型 !!bool # 布尔类型 !!str # 字符串类型 !!binary # 也是字符串类型 !!timestamp # 日期时间类型 !!null # 空值 !!set # 集合 !!omap,!!pairs # 键值列表或对象列表 !!seq # 序列,也是列表 !!map # 键值表
7.对象(重点)
Map(属性和值)(键值对)的形式: key:(空格)v :表示一堆键值对,空格不可省略。
yamlcar: color: red brand: BMW
一行写法
yamlcar:{color: red,brand: BMW}
相当于JSON格式:
json{"color":"red","brand":"BMW"}
8.数组
一组连词线开头的行,构成一个数组。
yamlbrand: - audi - bmw - ferrari
一行写法
yamlbrand: [audi,bmw,ferrari]
相当于JSON
json["auri","bmw","ferrari"]
9.文本块
|:使用|标注的文本内容缩进表示的块,可以保留块中已有的回车换行
yamlvalue: | hello world!
输出结果:hello 换行 world!
+表示保留文字块末尾的换行,-表示删除字符串末尾的换行。
yamlvalue: | hello value: |- hello value: |+ hello
输出:hello\n hello hello\n\n(有多少个回车就有多少个\n)
注意 “|” 与 文本之间须另起一行
:使用 > 标注的文本内容缩进表示的块,将块中回车替换为空格,最终连接成一行
yamlvalue: > hello world!
输出:hello 空格 world!
注意 “>” 与 文本之间的空格
10.锚点与引用
使用 & 定义数据锚点(即要复制的数据),使用 * 引用锚点数据(即数据的复制目的地)
yamlname: &a yaml book: *a books: - java - *a - python
输出book: yaml
输出books:[java,yaml,python]
注意*引用部分不能追加内容
以上为个人经验,希望能给大家一个参考,也希望大家多多支持猪先飞。
原文出处:https://blog.csdn.net/lp20171401131/article/details/10673300
相关文章
解决springboot使用logback日志出现LOG_PATH_IS_UNDEFINED文件夹的问题
这篇文章主要介绍了解决springboot使用logback日志出现LOG_PATH_IS_UNDEFINED文件夹的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-28- 这篇文章主要为大家详细介绍了SpringBoot实现excel文件生成和下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-09
- 这篇文章主要介绍了Vue 3.0 中 jsx 语法使用,帮助大家更好的理解和使用vue框架,感兴趣的朋友可以了解下...2020-11-13
- 这篇文章主要介绍了详解springBoot启动时找不到或无法加载主类解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-09-16
- 这篇文章主要介绍了SpringBoot集成Redis实现消息队列的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-10
- 这篇文章主要介绍了解决Springboot get请求是参数过长的情况,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-09-17
Spring Boot项目@RestController使用重定向redirect方式
这篇文章主要介绍了Spring Boot项目@RestController使用重定向redirect方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-02- 这篇文章主要介绍了Springboot+TCP监听服务器搭建过程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-10-28
- 这篇文章主要介绍了springBoot 项目排除数据库启动方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-10
- 本篇文章主要讲解C语言 基本语法,这里提供简单的示例和代码来详细讲解C语言的基本语法,开始学习C语言的朋友可以看一下,希望能够给你带来帮助...2021-09-18
springboot中使用@Transactional注解事物不生效的坑
这篇文章主要介绍了springboot中使用@Transactional注解事物不生效的原因,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-26- 这篇文章主要介绍了SpringBoot接口接收json参数解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-10-19
详解SpringBoot之访问静态资源(webapp...)
这篇文章主要介绍了详解SpringBoot之访问静态资源(webapp...),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-09-14- 这篇文章主要介绍了springboot多模块包扫描问题的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-09-16
Springboot mybatis plus druid多数据源解决方案 dynamic-datasource的使用详解
这篇文章主要介绍了Springboot mybatis plus druid多数据源解决方案 dynamic-datasource的使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-11-18- 这篇文章主要介绍了Springboot实现多线程注入bean的工具类操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-27
Springboot+MDC+traceId日志中打印唯一traceId
本文主要介绍了Springboot+MDC+traceId日志中打印唯一traceId,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-10-17SpringBoot部署到Linux读取resources下的文件及遇到的坑
本文主要给大家介绍SpringBoot部署到Linux读取resources下的文件,在平时业务开发过程中,很多朋友在获取到文件内容乱码或者文件读取不到的问题,今天给大家分享小编遇到的坑及处理方案,感兴趣的朋友跟随小编一起看看吧...2021-06-21- 这篇文章主要介绍了springboot中nacos动态路由的配置方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-11
SpringBoot高版本修改为低版本时测试类报错的解决方案
这篇文章主要介绍了SpringBoot高版本修改为低版本时测试类报错的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-18