【SpringBoot从初学者到专家的成长11】Spring Boot中的application.properties与application.yml详解
在Spring Boot应用程序中,application.properties
和application.yml
是配置文件的两种常用格式。这两个文件主要用于定义和管理应用的各种配置项,如数据库连接、日志设置、服务器端口、Spring Boot的自动配置选项等。虽然这两个文件的功能是相同的,但它们的格式和写法有所不同。任何使用SpringBoot做为开发框架的开发人员,都需要熟悉了解两种配置文件的格式和使用方法。
一、application.properties
简介
application.properties
是Spring Boot中最常用的配置文件格式之一。它遵循键值对的方式定义配置项,每个配置项都由键(key)和值(value)组成。其格式简洁、直观,非常适合用来定义简单的配置项。
1.1 配置文件基本格式
在application.properties
文件中,每一行都代表一个配置项,格式为:
key=value
例如,配置数据库连接:
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=root
1.2 常见配置项
-
服务器配置
server.port=8080 server.servlet.context-path=/myapp
-
数据源配置
spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=root spring.datasource.password=password
-
日志配置
logging.level.org.springframework=INFO logging.level.com.example=DEBUG logging.file.name=app.log
1.3 特点
- 简单直接,适合快速配置。
- 容易理解和使用,特别适合小型项目和初学者。
- 适合进行简单的属性配置,对于复杂结构的配置可能不太直观。
二、application.yml
简介
application.yml
(YAML格式)是Spring Boot支持的另一种配置方式。与properties
文件不同,yml
文件具有层级结构,使用缩进来表示配置项的层级关系。YAML语法更加灵活,适用于配置较复杂的应用场景。
2.1 配置文件基本格式
在application.yml
文件中,配置项的格式遵循YAML的规则,层级通过缩进表示(通常是2个空格)。
spring:datasource:url: jdbc:mysql://localhost:3306/mydbusername: rootpassword: password
2.2 常见配置项
-
服务器配置
server:port: 8080servlet:context-path: /myapp
-
数据源配置
spring:datasource:url: jdbc:mysql://localhost:3306/mydbusername: rootpassword: password
-
日志配置
logging:level:org.springframework: INFOcom.example: DEBUGfile:name: app.log
2.3 特点
- 配置项结构清晰、层级分明,适合管理复杂的配置。
- 支持更复杂的数据结构(如数组、对象等)。
- 在多个配置项间层级关系非常清晰,尤其对于大型项目或微服务系统来说,更加便于维护。
三、application.properties
与application.yml
的区别
尽管这两个配置文件的功能相同,它们有一些关键的区别:
特点 | application.properties | application.yml |
---|---|---|
语法 | 键值对形式,每个配置项在一行 | 层级结构,通过缩进表示层级关系 |
可读性 | 对于简单的配置项较为直观 | 对于复杂结构更为清晰,层次分明 |
适用场景 | 配置简单的应用 | 配置复杂结构,如嵌套属性、数组等 |
格式灵活性 | 不支持多层嵌套结构 | 支持多层嵌套、数组等结构 |
文件长度 | 配置较长时会显得杂乱 | 配置较长时层级分明,更易维护 |
四、如何在Spring Boot中使用application.properties
与application.yml
4.1 切换配置文件格式
Spring Boot默认会查找application.properties
作为配置文件,但你也可以选择使用application.yml
。只需将文件名修改为application.yml
,Spring Boot会自动识别并加载。
如果项目中同时存在这两个文件,Spring Boot会优先加载application.properties
。如果你想优先加载application.yml
,可以在application.properties
中使用如下配置:
spring.config.location=classpath:/application.yml
4.2 配置文件的优先级
Spring Boot会按照以下优先级加载配置文件,前面的文件会覆盖后面的文件配置:
- 命令行参数(最高优先级)
application.properties
/application.yml
(默认配置文件)- 外部配置文件(通过
--spring.config.location
指定) - 默认配置
4.3 多环境配置
Spring Boot支持为不同的环境使用不同的配置文件。你可以创建多个application-{profile}.properties
或application-{profile}.yml
文件,并通过spring.profiles.active
指定当前激活的环境配置。
例如:
# application-dev.properties
spring.datasource.url=jdbc:mysql://localhost:3306/dev_db# application-prod.properties
spring.datasource.url=jdbc:mysql://localhost:3306/prod_db
在application.properties
中指定激活的环境:
spring.profiles.active=dev
这样,Spring Boot会根据spring.profiles.active
的值加载对应的配置文件。
properties和yml的优缺点比较
application.properties
适用于较为简单的配置,特别是当配置项不多时,其简洁性和易用性非常适合小型项目。application.yml
更适合用于复杂的配置,能够清晰地组织层级关系,尤其在有大量嵌套数据结构或数组的场景下更为优雅。
以下是application.properties
和application.yml
的优缺点对比表格:
特性 | application.properties | application.yml |
---|---|---|
优点 | - 简单直观,适合小型项目 | - 层级结构清晰,适合复杂配置 |
- 适合配置项较少的情况 | - 支持嵌套对象和数组,配置管理灵活 | |
- 学习曲线低,易于上手 | - 易于维护,特别是配置项多时 | |
- 适合快速开发和测试 | - 配置文件更简洁,不易出现冗长的单行配置 | |
缺点 | - 对复杂的结构配置支持不足 | - 配置较长时,需要注意缩进的准确性 |
- 配置项较多时,容易显得杂乱不清 | - 比properties 格式更难以理解,尤其对初学者 | |
- 不支持层级结构,复杂配置较难管理 | - 相比properties ,格式更严格,需要保持一致的缩进 | |
- 对层级和数组结构的表示较为困难 | - 对小型项目而言,可能显得稍微复杂和冗余 |
五、写在最后
无论是选择application.properties
还是application.yml
,都取决于你的个人习惯和项目需求。对于简单的配置,properties
格式足够;而对于复杂的配置,yml
格式能够提供更清晰的结构和层级。如果你的应用日后需要处理更复杂的配置项,application.yml
可能是更好的选择。两者都能够满足Spring Boot的配置需求,只要你合理选择并加以使用,便能提升开发效率和项目可维护性。