SpringBoot 中 YAML(.yml) 和 .properties文件的区别
这些文件具有使应用程序启动和运行所需的不同配置属性,例如连接数据库什么是凭据,应用程序将在哪个端口上运行等。YAML ( .yml
) 文件:YAML 是一种配置语言。Python、Ruby、Java 等语言在开发应用程序时大量使用它来配置各种属性。
如果使用过 Elastic Search 实例和 MongoDB 数据库,那么这两个应用程序都使用 YAML( .yml
) 作为其默认配置格式。
例子:
#.yml file
some_key:value
some_number:9
some_bool:true
嵌套: 对于嵌套, .yml
文件支持使用空格的层次结构。
# .yml file
somemap:
key:value #use space not tab
number:9
#inline format
map2: {bool=true, date=2016-01-01}
让我们在此类文件中定义一个列表:YAML 作为其规范的一部分支持该列表。
#.properties file
# A List
numbers[0] = one
numbers[1] = two
# Inline List
numbers = one, two
.properties文件: 此文件扩展名用于配置应用程序。这些在 Java 等技术中用作 Property Resource Bundles 文件。
例子:
#.properties file
some_key = value
some_number = 9
some_bool = true
.properties嵌套: 对于嵌套, .properties
文件支持点 (.) 表示法。 .yml
文件中的内联格式与 JSON 非常相似
#.properties file
somemap.key = value
somemap.number = 9
map2.bool = true
map2.date = 2023-01-01
假设在这样的文件中定义一个列表: .properties
文件不支持列表,但是 spring 使用数组作为约定在 .properties
文件中定义列表。
#.yml file
numbers:
- one # use a dash followed by space
- two
# Inline List
numbers:[one, two]
SpringBoot 中 YAML(.yml) 和 .properties文件的区别:
YAML(.yml) | .properties |
---|---|
规范可以在这里找到它实际上并没有规范。 | 它与规范最接近的东西实际上是 javadoc。 |
人类可读(在人类可读性方面都做得很好) | 人类可读 |
支持 key/val,基本上是 map、List 和标量类型( int 、 string 等) |
支持 key/val,但不支持超出字符串的值 |
它的使用在 Python、Ruby 和 Java 等许多语言中非常普遍。 | 它主要用于 java |
分层结构 | 非分层结构 |
Spring Framework 不支持带有 .yml 文件的 [ @PropertySources ](https://github.com/PropertySources "@PropertySources") |
支持带有 .properties 文件的 [ @PropertySources ](https://github.com/PropertySources "@PropertySources") |
如果使用Spring 配置文件,可以在一个 .yml 文件中拥有多个配置 | 文件每个配置文件都需要一个单独的 .properties 文件 |
从 .yml 文件中检索值时,无论配置中的相应类型(int、string 等)如何,都会获得该值。 |
而对于 .properties 文件,无论配置中的实际值类型是什么,都会获得字符串。 |