😀前言
本篇博文是关于以数据为中心的配置文件yaml的说明和应用,希望能够帮助到您😊
🏠个人主页:晨犀主页
🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动力😉😉
💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看🥰
如果文章有什么需要改进的地方还请大佬不吝赐教 先在此感谢啦😊
文章目录
- yaml
- yaml 介绍
- 基本说明
- 解读
- 使用文档
- yaml 基本语法
- 数据类型
- 字面量
- 对象
- 数组
- yaml 应用实例
- 需求图解
- 代码实现
- yaml 使用细节
- 😄总结
yaml
yaml 介绍
基本说明
1、YAML 是"YAML Ain’t a Markup Language"(YAML 不是一种标记语言) 的递归缩写。在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言),是为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名。
解读
1、YAML 以数据做为中心,而不是以标记语言为重点。
2、YAML 仍然是一种标记语言, 但是和传统的标记语言不一样, 是以数据为中心的标记语言。
3、YAML 非常适合用来做以数据为中心的配置文件[springboot : application.yml]
使用文档
官方文档:https://yaml.org/
yaml for java: https://www.cnblogs.com/strongmore/p/14219180.html
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: v1k2: v2k3: v3
monster:id: 100name: 牛魔王
- 举例说明
数组
- 数组:一组按次序排列的值, 比如array、list、queue
行内写法: k: [v1,v2,v3]
hobby: [打篮球, 打乒乓球, 踢足球]#或者换行格式
k:- v1- v2- v3
hobby:- 打篮球- 打乒乓球- 踢足球
- 举例说明
yaml 应用实例
需求: 使用yaml 配置文件和JavaBean 进行数据绑定, 体会yaml 使用方式
需求图解
- 创建项目configuration , 完成yaml 的使用
- 运行效果
代码实现
- 创建一个新的SpringBoot 项目- configuration , 使用灵活配置方式创建项目
- 在pom.xml 引入lombok, 并切换一下springboot 版本
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.3</version><relativePath/> <!-- lookup parent from repository -->
</parent>
<!-- 引入lombok, 版本在spring-boot-dependencies-2.5.3.pom 指定了-->
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId>
</dependency>
- 创建configuration\src\main\java\com\nlc\springboot\bean\Car.java , 提醒一个小细节: 创建的bean 需要在SpringBootApplication 包或者其子包, 否则不会被默认扫描, 同时也不能完全使用lombok 的相关简化注解.
@ToString
@Data
public class Car {private String name;private Double price;
}
- 创建configuration\src\main\java\com\nlc\springboot\bean\Monster.java
@ConfigurationProperties(prefix = "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;
}
- 创建resources/application.yml, 演示各种写法. 提醒: 编写application.yml 时, 这些Bean 的字段是可以通过安装插件或jar 来自动提示的, 后面会讲, 现在先苦后甜.
monster:id: 100name: "牛魔王~~"age: 500isMarried: truebirth: 2000/10/10#对象
# car: {name: 宝马, price: 200000} #行内格式car: #换行格式name: 宝马~price: 300000#数组
# skill: [芭蕉扇, 牛魔拳] #行内格式skill:- 芭蕉扇~- 牛魔拳~
# hobby: [喝酒, 吃肉] #行内格式hobby:- 喝酒~- 吃肉~#map-属于对象
# wife: {no1: 玉面狐狸, no2: 铁扇公主} #行内风格wife:no1: 玉面狐狸~no2: 铁扇公主~
# salaries: [10000,20000] #行内风格salaries:- 10000- 20000cars: #因为cars k-v v是list<Car> 所以我们使用换行风格group1:- {name: 奔驰, price: 300000}- name: 保时捷price: 400000group2:- {name: 奔驰~, price: 100000}- name: 保时捷~price: 500000
- 创建com/nlc/springboot/controller/HiController.java
@RestController : 包含了@Controller @ResponseBody
@RestController
public class HiController {@AutowiredMonster monster;@RequestMapping("/monster")public Monster monster(){return monster;}
}
- 启动项目,完成测试
yaml 使用细节
- 如果application.properties 和application.yml 有相同的前缀值绑定, 则application.properties 优先级高, 开发时,应当避免
- 字符串无需加引号, 这个在前面已经演示了, 如果你用" " 或者’ ’ 包起来, 也可以, 简单举例
- 解决yaml 配置文件,不提示字段信息问题
1.如图, 大家可以知道,在编写application.yml 文件时,没有提示Monster 的字段信息,非常不方便
2.在pom.xml 加入spring-boot-configuration-processor 依赖, 可以从spring-boot-reference.pdf 拷贝
<!-- 引入yaml 文件提示, 可以看到JavaBean 字段提示-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional>
</dependency>
- 对application.yml 文件编辑,就会提示字段, 提示: 输入你在Bean 配置的prefix 名字就会提示.
- 提示: 如果还没有提出提示, 可以安装一个yaml 插件来搞定.
😄总结
- YAML 是一种较为人性化的数据序列化语言,可以配合目前大多数编程语言使用。
- YAML 的语法比较简洁直观,特点是使用空格来表达层次结构,其最大优势在于数据结构方面的表达,所以 YAML 更多应用于编写配置文件。
- YAML 仍然是一种标记语言, 但是和传统的标记语言不一样, 是以数据为中心的标记语言。
- 字符串无需加引号,加引号也不影响使用。
😁热门专栏推荐
SpringBoot篇
SpringBoot容器–注解的使用
SpringBoot 自动配置–常用配置
Spring Boot介绍–快速入门–约定优于配置
安装Lombok–Lombok的常用注解说明及使用方法
SpringBoot 依赖管理和自动配置—带你了解什么是版本仲裁
文章到这里就结束了,如果有什么疑问的地方请指出,诸大佬们一起来评论区一起讨论😁
希望能和诸大佬们一起努力,今后我们一起观看感谢您的阅读🍻
如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞