【发布时间】:2018-05-07 20:37:33
【问题描述】:
在我的项目中,我目前使用application.yml 进行配置。 Spring Initializr 生成application.properties?各有什么优缺点?
【问题讨论】:
标签: spring-boot properties configuration format yaml
在我的项目中,我目前使用application.yml 进行配置。 Spring Initializr 生成application.properties?各有什么优缺点?
【问题讨论】:
标签: spring-boot properties configuration format yaml
嗯,它们只是不同的数据格式。哪个更好更容易阅读?这显然是主观的。 Here's 一篇有用的博文。
就spring-boot 配置而言,请注意,使用YAML 只有一个记录在案的缺点。根据documentation:
YAML 文件不能通过
@PropertySource注解加载。因此,如果您需要以这种方式加载值,则需要使用属性文件。
【讨论】:
application.yaml 和application.properties 时会发生什么?我可以将这些东西移到.yaml 一个到.properties(根据需要更改格式)并期望事情继续以同样的方式工作吗?
一个显着的区别是属性在每个文件中的表示方式。 YAML 文件可以使用一致的空格来表示层次结构,而属性文件可以使用 = 来表示属性值。
例如
列表在 YAML 中分层表示:
标题:
- user-agent
- x-wag-diagonalsize
列表可以在属性文件中表示为内联列表(用逗号分隔):
headers = 用户代理,x-wag-diagonalsize
另一个区别是我们可以将多个配置文件添加到单个 yaml 文件中。
例如,我们可以将 application.yaml(应用程序特定属性)和 bootstrap.yaml(服务器特定属性)添加到单个 config.yaml 文件中
【讨论】:
据我所知,这些至少是一些的差异:
.properties 以顺序格式存储数据,而.yml 以分层格式存储数据。
.properties 仅支持键值对(基本上是字符串值),而.yml 支持键值对,以及映射、列表和标量类型值。
.properties 专门用于 Java,而.yml 可以用于其他语言(例如 Java、Python、ROR 等)。
当管理多个配置文件时:.properties 要求您为每个配置文件创建 .properties 文件,而在.yml 中,您可以在单个 @ 中为每个特定配置文件创建一个部分987654330@文件。
在Spring项目中,@PropertySource注解只能和.properties一起使用。
【讨论】:
.properties file :可以支持键值对以及映射、列表和标量类型值。 + point#3 .properties file 可用于任何语言