Spring Boot 的强大之处在于其高度可配置性,允许开发者根据不同环境和需求定制应用程序的行为。而这一切的核心便是配置文件。Spring Boot 支持多种配置文件格式,其中最常用的三种是 .properties、.yml 和 .yaml。
1. .properties:传统方式
.properties 文件是 Java 的传统配置文件格式,采用键值对结构,简单易懂。虽然语法简单,但对于复杂的配置结构,容易显得冗长且难以维护。
# 服务器配置
server.port=8080
server.servlet.context-path=/myapp
# 数据库配置
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 日志配置
logging.level.root=INFO
logging.file.name=myapp.log
2. .yml 和 .yaml:新兴方式
YAML (YAML Ain't Markup Language) 以其简洁、易读的特性,成为现代配置文件的宠儿。.yml 和 .yaml 在 Spring Boot 中等效,都代表 YAML 格式。YAML 使用缩进和冒号来表示层级关系,避免了 .properties 文件中大量的重复键名。
# 服务器配置
server:
port: 8080
servlet:
context-path: /myapp
# 数据库配置
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: root
password: password
driver-class-name: com.mysql.cj.jdbc.Driver
# 日志配置
logging:
level:
root: INFO
file:
name: myapp.log
YAML 的优势:
简洁易读: 使用缩进代替括号,结构清晰,易于理解和维护。
强大的表达能力: 支持列表、Map 等复杂数据结构,配置更加灵活。
与其他语言兼容性好: YAML 被广泛用于各种编程语言和工具。
3. 配置文件优先级
Spring Boot 加载配置文件的优先级顺序至关重要,避免配置冲突,确保应用行为符合预期。
以下是从高到低的优先级顺序:
命令行参数: --server.port=8081 (最高优先级)
Java 系统属性: -Dserver.port=8081
操作系统环境变量
Jar 包外的配置文件:
config/application.properties (or .yml/.yaml)
application.properties (or .yml/.yaml)
Jar 包内的配置文件:
BOOT-INF/classes/config/application.properties (or .yml/.yaml)
BOOT-INF/classes/application.properties (or .yml/.yaml)
@PropertySource 注解: 通过 @PropertySource 注解加载的配置文件。
示例:优先级演示
假设 application.properties 中 server.port=8080,application-dev.yml 中 server.port=8081,命令行参数 --server.port=8082,激活 dev profile。最终端口号将是 8082,因为命令行参数优先级最高。
4. 多环境配置
Spring Boot 提供了强大的多环境配置机制,方便在不同环境(开发、测试、生产等)使用不同的配置。
基于 Profile 的配置文件: application-{profile}.properties 或 application-{profile}.yml (例如:application-dev.yml, application-prod.yml)。
spring.profiles.active 属性: 在 application.properties 或 application.yml 中设置 spring.profiles.active 属性来激活特定的 profile。
# application.yml
spring:
profiles:
active: dev # 激活 dev profile
5. 示例
一般情况下,会有两个.yml文件,上边是以引用的方式声明,下边则是对应的属性值,这样写的好处是,能够对于配置信息一目了然,便于开发。
总结
Spring Boot 的配置文件机制灵活而强大,.properties、.yml 和 .yaml 提供了多种选择。理解它们的特性、优先级和多环境配置,并结合最佳实践,可以让你更好地管理应用配置,提高开发效率和代码质量。 感谢各位看官的观看,下期见,谢谢~