Java SpringBoot YAML(.yml)和.properties文件的区别
偶尔SpringBoot开发人员可能需要一个外部配置来定义SpringBoot应用程序的特性,以便我们可以在不同的环境中使用相同的应用程序代码。为此,我们可以使用YAML和.properties文件来存储所需的特性。尽管功能类似,但它们在语法和附加特性方面存在一些区别。在本文中,我们将探讨.yml和.properties文件之间的主要区别。
YAML vs Properties文件
在本节中,我们将介绍YAML和properties文件,然后创建一个描述这两个文件之间差异的表格。
YAML
它是一个缩写,代表YAML不是标记语言。在一些书籍和文章中,它的全称被写为Yet Another Markup Language,这也是正确的。YAML是一种人类可读的数据序列化格式,使用缩进来表示结构,冒号来分隔键值对。
Spring框架的核心组件之一是Spring profiles,它允许我们将应用程序的部分内容分离出来,仅在特定环境中可用。为此,我们只需要一个YAML文件,因为它可以在同一个文件中包含多个配置文件。
YAML示例
spring:
application:
name: spring1
datasource:
url: jdbc:mysql://localhost:9092/databasename
username: myname
password: myPasswrd
上述框中包含一个示例YAML文件的内容。在’application’部分中,我们设置了应用程序的名称,在’datasource’部分中,我们设置了数据库的用户名、密码和URL。
属性
它们是使用键值对格式(key=value)存储配置属性的简单文本文件。每个属性占据一行,注释以井号(#)开头。与YAML类似,它还提供执行应用程序所需的配置。
默认情况下,spring boot支持.properties文件。假设我们为一个应用程序创建了.yml和.properties文件,则spring boot会优先使用.properties文件,而不是.yml文件来执行。
示例属性
# name of the application
spring.application.name= spring1
# making connection with database
spring.datasource.url= jdbc:mysql://localhost:9092/databasename
spring.datasource.username= myname
spring.datasource.password= myPasswrd
这是YAML格式的.properties表示。我们可以清楚地看到,它的格式与YAML完全不同,而且很难理解。带有#符号的文本指定了注释。
YAML和Properties文件之间的区别
通过以上讨论,我们可以得出以下YAML和properties文件之间的不同之处:
YAML | Properties |
---|---|
此文件类型的扩展名为.yml。 | 此文件类型的扩展名为.properties。 |
必须正确缩进,否则会遇到错误。 | 此文件无需缩进。 |
在YAML文件中,不需要重复相同的键。 | 在properties文件中,每行都会重复键。 |
比properties文件更易读。 | 是一种相对不太易读的格式。 |
YAML文件支持分级格式。 | properties文件支持顺序格式。 |
它可以支持多种语言,包括Java、Python和Ruby。 | 它只能支持一种编程语言,即Java。 |
我们可以在一个YAML文件中包含多个spring配置文件。 | 对于每个环境的spring配置文件,我们需要单独的properties文件。 |
结论
在本文中,我们了解了YAML和属性文件之间的区别。这两种文件都用于定义SpringBoot应用程序的特性。使用YAML文件比属性文件具有更多的优点,这就是为什么开发人员更喜欢使用YAML文件而不是属性文件。