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 提供了多种选择。理解它们的特性、优先级和多环境配置,并结合最佳实践,可以让你更好地管理应用配置,提高开发效率和代码质量。 感谢各位看官的观看,下期见,谢谢~

相关推荐
《源码好优多》13 分钟前
基于Java Springboot出租车管理网站
java·开发语言·spring boot
无忧无虑Coding4 小时前
pyinstall 打包Django程序
后端·python·django
·云扬·4 小时前
Java IO 与 BIO、NIO、AIO 详解
java·开发语言·笔记·学习·nio·1024程序员节
求积分不加C4 小时前
Spring Boot中使用AOP和反射机制设计一个的幂等注解(两种持久化模式),简单易懂教程
java·spring boot·后端
夜色呦4 小时前
Spring Boot实验室管理系统:高效科研管理解决方案
数据库·spring boot·php
枫叶_v5 小时前
【SpringBoot】26 实体映射工具(MapStruct)
java·spring boot·后端
东方巴黎~Sunsiny5 小时前
java-图算法
java·开发语言·算法
2401_857617626 小时前
汽车资讯新趋势:Spring Boot技术解读
java·spring boot·后端
2401_857026236 小时前
Spring Boot技术在实验室信息管理中的应用
数据库·spring boot·php
liuxin334455666 小时前
科研实验室的数字化转型:Spring Boot系统
数据库·spring boot·php