📜  Java SpringBoot中YAML(.yml)和.properties文件的区别

📅  最后修改于: 2021-09-13 02:37:09             🧑  作者: Mango

这些文件具有使应用程序启动和运行所需的不同配置属性,例如连接数据库什么是凭据,应用程序将在哪个端口上运行等。

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 文件支持点 (.) 表示法。 .yml 文件中的内联格式与 JSON 非常相似

#.properties file

somemap.key = value 
somemap.number = 9

map2.bool = true
map2.date = 2016-01-01

让我们在这样的文件中定义一个列表: .properties 文件不支持 list 但 spring 使用数组作为约定来定义 .properties 文件中的列表。

#.yml file

numbers:
  - one # use a dash followed by space
  - two

# Inline List
numbers:[one, two]

差异表:

YAML(.yml) .properties
Spec can be found here It doesn’t really actually have a spec. The closest thing it has to a spec is actually the javadoc.
Human Readable (both do quite well in human readability) Human Readable
Supports key/val, basically map, List and scalar types (int, string etc.) Supports key/val, but doesn’t support values beyond the string
Its usage is quite prevalent in many languages like Python, Ruby, and Java It is primarily used in java
Hierarchical Structure Non-Hierarchical Structure
Spring Framework doesn’t support @PropertySources with .yml files supports @PropertySources with .properties file
If you are using spring profiles, you can have multiple profiles in one single .yml file Each profile need one separate .properties file
While retrieving the values from .yml file we get the value as whatever the respective type (int, string etc.) is in the configuration While in case of the .properties files we get strings regardless of what the actual value type is in the configuration

我应该使用什么 .properties 或 .yml 文件?

严格来说,.yml 文件优于 .properties 文件,因为它具有类型安全、层次结构和支持列表,但是如果您使用的是 spring,spring 有许多约定以及类型转换,可以让您有效地获得所有这些相同YAML 为您提供的功能。

使用 YAML(.yml) 文件可能会看到的一项优势是,如果您使用多个读取相同配置文件的应用程序。您可能会看到其他语言对 YAML(.yml) 的更好支持,而不是 .properties。