java yml文件语法

时间:2025-08-28 10:30:02来源:互联网

下面小编就为大家分享一篇java yml文件语法,具有很好的参考价值,希望对大家有所帮助。

语法规则

  • 文件后缀.yml
  • 大小写敏感
  • 空格缩进区分层级,且空格数量不要求,对齐即可(通常开头缩进 2 个空格。字符后缩进 1 个空格,如冒号、逗号等。)
  • # 来表示注释
# This is a comment
name: John Doe  # This is an inline comment

数据类型

1、 标量:标量是单个的、不可分的值。

 2、复合类型

字符串

- 字符串(String):可以用引号,也可以不用。例如:

     name: "John Doe"
     greeting: Hello, world!

整数

- 整数(Integer):例如:

     age: 25

浮点数

- 浮点数(Float):例如:

     price: 19.99

布尔值

- 布尔值(Boolean):true 或 false。例如:

     is_active: true

Null

- Null:null 或 ~。例如:

     field: null

日期和时间

- 日期和时间:YAML支持多种日期和时间的格式。例如:

     date: 2002-12-14
     timestamp: 2001-12-15T02:59:43.1Z

序列

- 序列(Sequence):序列是一组按顺序排列的值,类似于数组或列表。它有好几种表示方式

块样式,每个项占一行,每个项前面有一个破折号(-)和一个空格。

fruits:
  - Apple
  - Banana
  - Orange

流样式,所有的项在一行内,用逗号分隔,整个序列用方括号括起来。

fruits: [Apple, Banana, Orange]

混合样式,你也可以在一个序列中混合使用块样式和流样式。

fruits:
  - Apple
  - Banana
  - [Orange, Grape, Pineapple]

复杂序列:序列的项可以是任何类型的数据,包括标量、序列、映射等。

people:
  - name: John Doe
    age: 30
  - name: Jane Doe
    age: 28

映射

- 映射(Mapping):映射是一组键值对,类似于哈希表或字典。支持多种样式表示

块样式,每个键值对占一行,键和值之间用冒号(:)分隔。

person:
  name: John Doe
  age: 30

流样式,所有的键值对在一行内,用逗号分隔,整个映射用花括号括起来。

person: {name: John Doe, age: 30}

混合样式:你也可以在一个映射中混合使用块样式和流样式。

person:
  name: John Doe
  age: 30
  children: {first: Alice, second: Bob}

复杂映射:映射的值可以是任何类型的数据,包括标量、序列、映射等。

person:
  name: John Doe
  age: 30
  children:
    - name: Alice
      age: 5
    - name: Bob
      age: 3

特殊符号

  • :(冒号):用于分隔键和值。例如:key: value

  • -(减号):用于表示列表中的项。例如:

- item1
- item2
  • #(井号):用于表示注释。以 # 开头的内容会被视为注释,不会被解析。
# 这是一个注释
key: value
  • "(双引号)和 '(单引号):用于包含字符串,可以是双引号包含或单引号包含,用于确保字符串中的特殊字符不被解析。例如:
double_quoted: "This is a string with special characters like \n and \t."
single_quoted: 'This is another string with special characters like \n and \t.'
  • &(&符号)和 *(星号):用于创建和引用锚点和别名。锚点用于标记一个值,而别名用于引用该值。例如:
- &anchor value1
- *anchor  # 此处引用了上面的锚点,值为 value1
  • !(感叹号):用于标记数据类型。例如 !str 表示字符串类型,!int 表示整数类型。
key: !str This is a string
  • |>:用于多行文本块。| 表示保留换行符,> 表示折叠换行符为一个空格。例如:
multiline: |
  This is a multiline
  string with line breaks.
folded: >
  This is a folded
  string with line breaks.

映射规则

  1. 下划线 _ 分隔的键:

    • YAML 中的键:my_key
    • 映射到 Java 类属性:myKey(驼峰命名)
  2. 中划线 - 分隔的键:

    • YAML 中的键:my-key
    • 映射到 Java 类属性:myKey(驼峰命名)
  3. 省略分隔符 -_

    • YAML 中的键:mykey
    • 映射到 Java 类属性:mykey(保持不变)
  4. 使用驼峰命名的键:

    • YAML 中的键:myKey
    • 映射到 Java 类属性:myKey(保持不变)
  5. 使用帕斯卡命名的键:

    • YAML 中的键:MyKey
    • 映射到 Java 类属性:MyKey(保持不变)

$的使用

可以使用${}来应用定义的变量

可以定义变量的地方:

在properties文件或yml文件:定义:my.property=value,引用${my.property}

通过操作系统环境变量配置: ${ENV_VAR_NAME}。例如,如果系统环境中存在 MY_ENV_VARIABLE,则可以这样引用

通过启动时命令行定义变量:如 --my.argument=value,这些参数可以通过 ${command.line.argument} 的形式在配置文件中引用。

通过java系统属性:-Dmy.system.property=myValue, ${system.property.name} 

通过嵌入式文件:通过 spring.config.import 属性导入额外的配置源。这些外部配置文件中的变量也可以被${}引用。

RandomValuePropertySource:Spring Boot提供了 RandomValuePropertySource,用于生成随机数或UUID。例如,${random.int} 或 ${random.uuid} 可以生成相应的随机值

自定义配置源:如果项目中引入了自定义的配置源(如自定义的 PropertySource 实现或第三方配置库),这些源中的属性也可能通过 ${} 引用来访问

 

本站部分内容转载自互联网,如果有网站内容侵犯了您的权益,可直接联系我们删除,感谢支持!