跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava

Spring Boot 参数配置详解:properties、yml 及外部化配置

Spring Boot 的参数配置机制。内容涵盖 application.properties 与 application.yml 两种配置文件的格式区别及使用规范。阐述了配置文件的加载位置与优先级顺序,以及实现配置与代码分离的最佳实践。重点讲解了外部化配置方式,包括命令行参数、环境变量及多环境 Profile 的配置与激活方法。同时演示了如何通过 @Value 和 @ConfigurationProperties 注解在代码中安全地获取配置值,并提供了服务器、数据源、JPA、日志等常用配置示例。最后总结了约定大于配置、配置外部化及类型安全绑定的核心优势。

奇形怪状发布于 2026/3/29更新于 2026/9/469 浏览
Spring Boot 参数配置详解:properties、yml 及外部化配置

核心概念:application.properties 与 application.yml

Spring Boot 默认使用这两种文件进行配置(二者选其一即可,.yml 更常用)。

application.properties (传统键值对格式)

server.port=8081
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=secret
logging.level.com.example.demo=debug

application.yml (YAML 格式,层次感更强,推荐使用)

server:
  port: 8081
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: secret
logging:
  level:
    com.example.demo: debug

YAML 注意事项:缩进必须使用空格,不能使用 Tab 键,冒号后面必须有一个空格。

配置的加载位置与优先级

Spring Boot 会从以下位置按从高到低的优先级加载 application 配置文件(高优先级的配置会覆盖低优先级的配置):

  1. 当前项目根目录下的 /config 子目录
  2. 当前项目根目录
  3. classpath 下的 /config 包 (即 src/main/resources/config)
  4. classpath 根路径 (即 src/main/resources)

最佳实践:在开发时,将通用配置放在 src/main/resources/application.yml 中。在打包部署时,可以在 JAR 包所在目录创建一个 config 文件夹,里面放一个 application.yml 来覆盖开发环境的配置(如数据库连接),这样就实现了配置与代码分离。

外部化配置(非常强大)

除了配置文件,Spring Boot 还支持多种外部配置方式,优先级高于application.yml。这在容器化部署(如 Docker)时尤其有用。

  1. 命令行参数

    java -jar yourapp.jar --server.port=8888 --spring.datasource.url=jdbc:mysql://prod-server:3306/proddb
    
  2. 操作系统环境变量 Spring Boot 会自动识别形如 SPRING_DATASOURCE_URL 的环境变量(注意大小写和下划线)。

  3. Profile-specific 配置(多环境配置) 这是管理不同环境(开发、测试、生产)配置的最佳方式。在通用的 application.yml 中,通过 spring.profiles.active 属性来激活特定环境的配置。

    • 配置文件命名规则:application-{profile}.yml
    • 例如:
      • application-dev.yml (开发环境)
      • application-test.yml (测试环境)
      • application-prod.yml (生产环境)

    application.yml

    spring:
      profiles:
        active: dev # 默认激活开发环境
    

    激活方式:

    • 在配置文件中设置(如上所示)。
    • 命令行激活:java -jar yourapp.jar --spring.profiles.active=prod
    • JVM 参数:-Dspring.profiles.active=test
    • 环境变量:export SPRING_PROFILES_ACTIVE=prod

如何在代码中获取配置值?

@Value 注解 (适用于单个属性)

@Component
public class MyComponent {
    @Value("${server.port}")
    private int serverPort;

    @Value("${app.message: Hello Default}") // 使用冒号指定默认值
    private String message;
}

@ConfigurationProperties 注解 (推荐,用于绑定一组配置)

这是更类型安全、更面向对象的方式。

步骤 1:在 application.yml 中定义配置

app:
  user:
    name: "Alice"
    age: 30
    email: "[email protected]"
    hobbies:
      - reading
      - hiking

步骤 2:创建一个配置类来绑定这些属性

@Component
@ConfigurationProperties(prefix = "app.user") // 前缀是 app.user
@Data // Lombok 注解,自动生成 getter/setter
public class UserProperties {
    private String name;
    private Integer age;
    private String email;
    private List<String> hobbies;
}

步骤 3:在需要的地方注入并使用

@Service
public class MyService {
    @Autowired
    private UserProperties userProperties;

    public void doSomething() {
        System.out.println("User name: " + userProperties.getName());
        System.out.println("User hobbies: " + userProperties.getHobbies());
    }
}

别忘了在启动类上添加 @EnableConfigurationProperties 注解(但如果你像上面一样在配置类上使用了 @Component,则不需要)。

常用配置示例

# 服务器配置
server:
  port: 8080
  servlet:
    context-path: /api # 应用上下文路径

# 数据源配置
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver

# JPA 配置
jpa:
  hibernate:
    ddl-auto: update # 生产环境不要用 create-drop 或 update
    show-sql: true

# 日志配置
logging:
  level:
    root: info
    org.springframework.web: debug
    com.example: trace
  file:
    name: logs/myapp.log # 输出到文件

# 自定义配置
myapp:
  feature:
    enabled: true
    api-url: https://api.example.com

总结

Spring Boot 的参数配置系统非常灵活和强大,其核心思想是:

  • 约定大于配置:提供了大量默认配置,开箱即用。
  • 配置外部化:允许你通过文件、命令行、环境变量等多种方式覆盖默认配置,轻松适应不同环境。
  • 类型安全绑定:通过 @ConfigurationProperties 可以轻松地将一组配置映射到 Java Bean 上,是管理自定义配置的首选方式。

目录

  1. 核心概念:application.properties 与 application.yml
  2. application.properties (传统键值对格式)
  3. application.yml (YAML 格式,层次感更强,推荐使用)
  4. 配置的加载位置与优先级
  5. 外部化配置(非常强大)
  6. 如何在代码中获取配置值?
  7. @Value 注解 (适用于单个属性)
  8. @ConfigurationProperties 注解 (推荐,用于绑定一组配置)
  9. 常用配置示例
  10. 服务器配置
  11. 数据源配置
  12. JPA 配置
  13. 日志配置
  14. 自定义配置
  15. 总结

更多推荐文章

查看全部
  • Prompt 辅助的实体识别(NER)实战案例
  • Flutter Web 跨域(CORS)问题本地调试解决方案
  • Windows 10 安装 WSL2 与 Ubuntu 24.04 并配置 CUDA 环境
  • 动态插桩技术 (IAST) 在 Web 应用漏洞挖掘中的实战
  • 9 款主流 AI Agent 产品横评与场景推荐
  • OpenClaw 龙虾机器人本地免费部署与配置指南
  • 主流大模型的优势与未来发展趋势分析
  • C++ 构造函数初始化列表详解
  • 基于 Java Swing 的个人所得税计算模拟器源码解析
  • 滑动窗口算法实战:串联所有单词子串与最小覆盖子串
  • DFT 中的 On-Chip Clock Controller (OCC) 架构设计与插入规则
  • Clerk 完全指南:现代 Web 应用用户认证
  • 大语言模型超参数调优指南
  • FPGA 高速通信:Aurora64B/66B IP 使用指南
  • 2026 年 TypeScript 与 JavaScript 的共生终局:霸权已定,但非唯一
  • Spring Boot 前后端实时匹配系统实现:WebSocket 与 Vue 集成
  • FPGA 经典面试题目及参考答案汇总
  • Ubuntu 安装 OpenClaw 遇 Gateway 服务检查失败问题排查与解决
  • Rust 与 WebAssembly 实战:在浏览器与 Node.js 运行高性能代码
  • 单链表综合练习:删除指定值节点、反转链表及查找中间节点

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online