YAML简介(.yml文件后缀)

YAML是一种可读性强、专注于数据序列化的格式,常用于配置文件和脚本语言。它以键值对形式表达数据,通过缩进来指示层级,支持对象、数组和标量等数据类型。在编写时,注意冒号后需空格,注释以#开头,且不允许使用制表符缩进。YAML在配置文件和数据序列化场景中广泛应用,但不适于跨语言数据交换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

YAML Ain’t a Markup Language, Yet Another Markup Language.

情景

最近在使用 github+hexo 配置属于自己的博客时遇到了以 yml 为后缀的配置文件,因为不太了解,所以顺便学习一下。

YAML 是什么?

YAML 是一种可读性高,以数据为中心的数据序列化格式。可以表达 对象(键值对)数组标量 这几种数据形式 能够被多种编程语言和脚本语言解析。

什么是序列化

序列化指的是将自定义的对象或者其他数据进行持久化,从而方便进行传输和存储。一般情况下,能够序列化的数据一定能够通过反序列化恢复。

YAML 语法与格式

基本语法

  • k: v 的形式来表示键值对的关系,冒号后面必须有一个空格
  • # 表示注释
  • 对大小写敏感
  • 通过缩进来表示层级关系,缩排中空格的数目不重要,只要相同阶层的元素左侧对齐就可以了
  • 缩进只能使用空格,不能使用 tab 缩进键
  • 字符串可以不用双引号

格式

对象和键值对

通过 k: v 的方式表示对象或者键值对,冒号后必须要加一个空格:

Name: Astron
Sex: female
School: TJU

通过缩进来表示对象的多个属性:

People: 
   Name: Astron
   Sex: female
   School: TJU

也可以写成

people: {name: Astron, sex: female}

数组

数组(或者列表)中的元素采用 - 表示,以 - 开头的行表示构成一个数组

eg1:

- A
- B
- C

eg2:

people: 
    - yyy
    - zzz
    - www

行内表示:

people: [yyy, zzz, www]

eg3: 对象数组

people: 
    - 
      name: yyy
      age: 18
    - 
      name: zzz
      age: 19

使用流式表示:

people: [{name: yyy, age: 18},{name: zzz, age: 19}]

标量

标量是最基本的不可再分的值,包括:

  • 整数
  • 浮点数
  • 字符串
  • 布尔值
  • Null
  • 时间
  • 日期

eg:

boolean:
   - true # 大小写都可以
   - false
   
float:
   - 3.14
   - 3.25e+5 # 科学计数法

int: 12

null: 
   nodeName: name

string: 123

date: 2020-01-01 # 格式为 yyyy-MM-dd

datetime: 2020-01-10T15:02:08+08:00 # 日期和时间使用T连接,+表示时区

引用

& 用于建立锚点,* 用于引用锚点,<< 表示合并到当前数据

eg1:

defaults: &defaults
   adapter: ppp
   host: qqq
   
development: 
   database: mq
   <<: *defaults

相当于:

defaults:
   adapter: ppp
   host: qqq
   
development: 
   database: mq
   adapter: ppp
   host: qqq

eg2:

- &showell steve
- clark
- eve
- *showell

相当于:

- steve
- clark
- eve
- steve

使用场景

脚本语言

YAML 实现简单,解析成本低,所以特别适合在脚本语言中使用

序列化

配置文件

写 YAML 比 XML 方便,所以 YAML 也可以用来做配置文件,但是,不同语言间的数据流转不建议使用YAML。

参考

百度百科
菜鸟教程

### Java 项目中缺少 `.yml` 文件的解决方案 在开发基于 Spring Boot 的 Java 项目时,如果发现 `application.yml` 或其他 `.yml` 配置文件未被正确加载或识别,通常会涉及以下几个方面的问题及其对应的解决办法。 #### 1. **IDEA 中 Maven 包缺失** 部分开发者在使用 IDEA 创建 Spring Initializr 项目后,可能会遇到 External Libraries 缺少相关 Maven 包的情况。即使右侧 Maven 工具窗口显示了这些依赖项,重新导入(Reimport)也无法解决问题[^3]。 此时可以通过以下方式尝试修复: - 手动删除项目的 `.idea` 和 `target` 文件夹。 - 清理并重建项目:执行命令 `mvn clean install` 来强制刷新本地仓库中的依赖关系。 - 如果仍然无效,则检查网络环境是否阻止了某些外部资源的访问。 #### 2. **配置文件路径错误** Spring Boot 默认会在类路径下的根目录查找名为 `application.properties` 或者 `application.yml` 的全局设置文档作为启动参数源之一。但如果自定义命名或者放置位置不当的话就会造成读取失败现象发生。因此要确保该文件位于 src/main/resources 下面,并且名称保持一致即 application 开头加上对应扩展名(.properties|.yaml)[^1]. 另外需要注意大小写敏感度问题,在Linux系统环境下尤其重要因为它是区分字母大小写的;而在Windows操作系统里则相对宽松些不过为了兼容多平台建议还是遵循标准书写习惯比较好。 #### 3. **引入 Bootstrap 支持** 当需要额外支持 bootstrap.yml 这样的早期初始化配置文件(比如用于服务注册中心地址等),就需要显式声明 spring-cloud-starter-bootstrap 组件来激活这一特性[^5]: ```xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> <version>3.1.1</version> </dependency> ``` 安装好上述插件之后就能让框架自动探测到此类特殊用途的设定档从而完成相应功能启用过程而无需再手动指定其所在之处啦! #### 4. **编码格式冲突** 有时由于文本编辑器保存模式不同而导致实际内容虽然看起来没错但实际上却包含了不可见字符或者是BOM(Byte Order Mark)标记之类的干扰因素存在其中进而影响解析引擎正常工作流程。所以最好确认一下所使用的工具选项里面有没有勾选去除多余空白符之类的功能开关哦~ --- ### 示例代码片段 以下是通过 @CrossOrigin 注解实现跨域请求的一个简单例子[^4]: ```java @RestController @RequestMapping("/api") @CrossOrigin(origins = "*") //允许任何域名发起请求 public class ExampleController { @GetMapping("/hello") public String sayHello() { return "Hello from backend!"; } } ``` 此段程序展示了如何利用注释简化 CORS (Cross-Origin Resource Sharing) 设置操作步骤以便于前后端分离架构下更方便快捷地构建 RESTful API 接口服务。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值