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.logyaml 的优势:
简洁易读: 使用缩进代替括号,结构清晰,易于理解和维护。
强大的表达能力: 支持列表、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 profile5. 示例
一般情况下,会有两个.yml文件,上边是以引用的方式声明,下边则是对应的属性值,这样写的好处是,能够对于配置信息一目了然,便于开发。


总结
spring boot 的配置文件机制灵活而强大,.properties、.yml 和 .yaml 提供了多种选择。理解它们的特性、优先级和多环境配置,并结合最佳实践,可以让你更好地管理应用配置,提高开发效率和代码质量。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论