Spring Boot 之三大配置文件.properties、.yml、.yaml 及其优先级解析

Spring Boot 的强大之处在于其高度可配置性,允许开发者根据不同环境和需求定制应用程序的行为。而这一切的核心便是配置文件。Spring Boot 支持多种配置文件格式,其中最常用的三种是 .properties、.yml 和 .yaml。

1. .properties:传统方式

.properties 文件是 Java 的传统配置文件格式,采用键值对结构,简单易懂。虽然语法简单,但对于复杂的配置结构,容易显得冗长且难以维护。

XML 复制代码
# 服务器配置
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 文件中大量的重复键名。

XML 复制代码
# 服务器配置
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。

XML 复制代码
# application.yml
spring:
  profiles:
    active: dev # 激活 dev profile

5. 示例

一般情况下,会有两个.yml文件,上边是以引用的方式声明,下边则是对应的属性值,这样写的好处是,能够对于配置信息一目了然,便于开发。

总结

Spring Boot 的配置文件机制灵活而强大,.properties、.yml 和 .yaml 提供了多种选择。理解它们的特性、优先级和多环境配置,并结合最佳实践,可以让你更好地管理应用配置,提高开发效率和代码质量。 感谢各位看官的观看,下期见,谢谢~

相关推荐
旺仔老馒头.7 小时前
【C++】类和对象(二)
开发语言·c++·后端·类和对象
广师大-Wzx7 小时前
JavaWeb:后端部分
java·开发语言·spring·servlet·tomcat·maven·mybatis
广东王多鱼7 小时前
一个人 + Claude = 全栈开发团队:从零构建 AI 自动化开发系统的技术实现
后端·vibecoding
用户2160719532957 小时前
AQS、ReentrantLock详解
后端
Rust研习社7 小时前
Rust Clippy 实用指南:写出更优雅、安全的 Rust 代码
后端·rust·编程语言
小撒的私房菜7 小时前
Agent = Model + Harness:这个公式,让我重新理解了 AI 工程
人工智能·后端
掘金者阿豪7 小时前
Go 语言操作金仓数据库(下篇):SQL 执行、类型映射与超时控制
后端
IVEN_7 小时前
全栈开发必看:从内存变量到关系型数据库的完整旅程
后端
dishugj7 小时前
HANA数据库常用命令总结
java·前端·数据库
MacroZheng7 小时前
横空出世!IDEA最强MyBatis插件来了,功能很全!
java·后端·mybatis