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