Spring Boot 配置文件深度解析

Spring Boot 配置文件深度解析(2026 最新版)

Spring Boot 的配置文件是整个应用的核心“控制中心”,它决定了应用的端口、数据库连接、日志级别、自定义属性等几乎所有行为。Spring Boot 提供了强大而灵活的配置机制,支持多种格式、多环境切换、优先级层级、外部化配置等。本文从基础到高级,全面深度解析 Spring Boot 配置文件。

1. 支持的配置文件格式与命名

Spring Boot 默认支持两种主流格式(优先级:properties > yaml):

文件名格式说明推荐场景
application.propertiesProperties键值对格式,简单直观小项目、快速原型
application.yml/application.yamlYAML层级结构更清晰,支持列表、对象中大型项目(强烈推荐)

同时存在时的优先级application.properties>application.yml(同名属性以 properties 为准)

2. 多环境配置文件(Profile)

Spring Boot 支持根据不同环境加载不同配置,非常适合开发、测试、生产分离。

命名规则

  • application-dev.yml(开发环境)
  • application-prod.yml(生产环境)
  • application-test.yml(测试环境)

激活方式(任选其一):

  1. application.yml中设置:
    spring:profiles:active:dev
  2. 启动参数:
    java -jar app.jar --spring.profiles.active=prod
  3. IDEA 配置:Run → Edit Configurations → Active profiles 填prod
  4. 环境变量:SPRING_PROFILES_ACTIVE=prod

优先级:特定 profile 配置会覆盖主配置文件application.yml中的同名属性。

示例

# application.yml(通用配置)server:port:8080spring:datasource:url:jdbc:mysql://localhost:3306/testdb# application-prod.yml(生产覆盖)server:port:80spring:datasource:url:jdbc:mysql://prod-server:3306/proddbusername:prod_user
3. 配置属性优先级(从高到低,2026 最新版共 23 级)

Spring Boot 配置来源非常多,优先级如下(越高越优先,覆盖低优先级同名属性):

  1. 命令行参数(--server.port=9090
  2. SPRING_APPLICATION_JSON环境变量
  3. Java System Properties(System.getProperties()
  4. 操作系统环境变量
  5. application-{profile}.properties/yml(jar 外部)
  6. application.properties/yml(jar 外部)
  7. 项目内application-{profile}.properties/yml
  8. 项目内application.properties/yml
  9. @PropertySource注解加载的配置
  10. 默认属性(@SpringBootApplication中的defaultProperties

实战建议

  • 生产环境用命令行或环境变量覆盖敏感配置(如密码)
  • 开发时用application-dev.yml放本地配置
4. YAML 配置文件高级语法(比 properties 强大得多)

YAML 支持复杂数据结构,非常适合配置对象、列表、多环境。

基本语法示例

# 普通键值server:port:8080servlet:context-path:/api# 对象嵌套spring:datasource:url:jdbc:mysql://localhost:3306/mydbusername:rootpassword:123456driver-class-name:com.mysql.cj.jdbc.Driver# 列表management:endpoints:web:exposure:include:health,info,metrics,prometheus# 数组写法books:-title:Java编程思想price:99.0-title:Spring Boot实战price:89.0# 多环境配置(推荐写法)---spring:profiles:devserver:port:8081---spring:profiles:prodserver:port:80

简化写法(推荐):

spring:datasource:hikari:maximum-pool-size:20connection-timeout:30000
5. 自定义配置属性与 @ConfigurationProperties

Spring Boot 允许将配置绑定到 Java 对象上,实现类型安全配置。

步骤

  1. 添加依赖(通常已包含):

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency>
  2. 创建配置类:

@Component@ConfigurationProperties(prefix="app")// 前缀 app@DatapublicclassAppProperties{privateStringname;privateStringversion;privateList<String>admins;privateDatabasedatabase;@DatapublicstaticclassDatabase{privateStringhost;privateintport;privateStringusername;}}
  1. application.yml中配置:
app:name:图书购买系统version:1.0.0admins:-admin1@example.com-admin2@example.comdatabase:host:localhostport:3306username:root
  1. 使用:
@AutowiredprivateAppPropertiesappProperties;publicvoidprintConfig(){System.out.println(appProperties.getName());System.out.println(appProperties.getDatabase().getHost());}

优点

  • 类型安全(IDE 提示、编译检查)
  • 支持复杂对象、列表、嵌套
  • 支持校验(配合@Validated+ Bean Validation)
6. 随机值与占位符
app:secret:${random.uuid}# 生成随机 UUIDnumber:${random.int(1000,9999)}# 随机端口或验证码token-length:${random.int[10,20]}# 范围随机# 占位符引用server:port:${SERVER_PORT:8080}# 环境变量不存在时用默认值
7. 外部化配置最佳实践(生产必备)
场景推荐方式
数据库密码环境变量或命令行参数
多环境切换Profile + 外部 config 目录
云部署(K8s/Docker)ConfigMap + 环境变量
敏感信息从不写在代码仓库,用外部配置覆盖

外部配置目录
运行时指定:

java -jar app.jar --spring.config.location=/etc/config/application-prod.yml
8. 总结:配置优先级记忆口诀

命外内默”:

  • 令行参数最高
  • 部配置文件(jar 外)
  • 部配置文件(jar 内)
  • 认属性最低

掌握了 Spring Boot 的配置文件机制,你就能轻松管理复杂应用的配置,实现开发、测试、生产环境的完美隔离!

如果想看具体案例(如整合 MySQL、Redis 的完整配置),或者外部化配置的 Docker/K8s 实践,随时告诉我,我继续深度讲解!🚀

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1135370.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

马克思主义与认识论:巴舍拉、康吉莱姆与福柯的思想交汇

马克思主义与认识论&#xff1a;巴舍拉、康吉莱姆与福柯的思想交汇在哲学与科学的互动谱系中&#xff0c;马克思主义认识论始终以历史唯物主义为根基&#xff0c;强调知识生产与社会历史条件的辩证关联。巴舍拉、康吉莱姆与福柯三位思想家&#xff0c;通过对科学知识形成机制、…

响应式Web测试最佳实践

响应式Web测试的重要性与挑战在当今多设备互联的时代&#xff0c;响应式网页设计&#xff08;Responsive Web Design, RWD&#xff09;已成为Web开发的标配&#xff0c;它确保网站能在智能手机、平板、桌面等多种屏幕尺寸上自适应展示。然而&#xff0c;对于软件测试从业者而言…

Image-to-Video生成失败?这5个CUDA错误解决方案必看

Image-to-Video生成失败&#xff1f;这5个CUDA错误解决方案必看 背景与问题定位&#xff1a;Image-to-Video二次开发中的典型GPU挑战 在基于 I2VGen-XL 模型的 Image-to-Video 图像转视频生成器 二次构建过程中&#xff0c;开发者“科哥”成功实现了本地化部署和WebUI交互功能。…

2026年移动测试工具Top 5

移动测试工具的演变与2026年展望移动应用测试已成为软件开发生命周期的核心环节&#xff0c;随着5G普及、AI融合和跨平台需求激增&#xff0c;2026年移动测试工具正经历革命性变革。本文基于行业报告&#xff08;如Gartner预测&#xff09;和实际案例&#xff0c;为测试从业者深…

Sambert-HifiGan语音合成服务性能基准测试

Sambert-HifiGan语音合成服务性能基准测试 &#x1f4ca; 测试背景与目标 随着AI语音技术的普及&#xff0c;高质量、低延迟的中文语音合成&#xff08;TTS&#xff09;系统在智能客服、有声阅读、虚拟主播等场景中需求激增。Sambert-HifiGan 作为 ModelScope 平台上表现优异的…

Sambert-HifiGan多情感语音合成:如何实现情感自然过渡

Sambert-HifiGan多情感语音合成&#xff1a;如何实现情感自然过渡 引言&#xff1a;中文多情感语音合成的现实需求 随着智能客服、虚拟主播、有声阅读等应用场景的不断拓展&#xff0c;传统单一语调的语音合成&#xff08;TTS&#xff09;已难以满足用户对表达自然性与情感丰富…

codex思维迁移:如何构建自己的AI视频生成器?

codex思维迁移&#xff1a;如何构建自己的AI视频生成器&#xff1f; Image-to-Video图像转视频生成器 二次构建开发by科哥 “从一张静态图到一段动态影像&#xff0c;背后是扩散模型与时空建模的深度融合。” 在AIGC浪潮中&#xff0c;图像生成已趋于成熟&#xff0c;而视频生…

JAVA中对象的几种比较

Java 中对象的几种比较方式详解 Java 中对象的“比较”主要分为两种需求&#xff1a; 判断两个对象是否“相等”&#xff08;内容是否相同&#xff09;判断两个对象的大小关系&#xff08;排序用&#xff09; 对应地&#xff0c;Java 提供了多种机制来实现对象的比较。下面系…

云服务器按小时计费:节省50%算力开支的方法

云服务器按小时计费&#xff1a;节省50%算力开支的方法 背景与挑战&#xff1a;AI生成任务的算力成本困局 在当前AIGC&#xff08;人工智能生成内容&#xff09;爆发式增长的背景下&#xff0c;图像转视频&#xff08;Image-to-Video&#xff09;等高算力需求任务已成为内容创作…

【Java毕设全套源码+文档】基于springboot的网络云端日记本系统设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

Sambert-HifiGan语音合成服务的自动化测试方案

Sambert-HifiGan语音合成服务的自动化测试方案 引言&#xff1a;为何需要自动化测试&#xff1f; 随着语音合成技术在智能客服、有声阅读、虚拟主播等场景中的广泛应用&#xff0c;服务稳定性与输出质量的一致性成为工程落地的关键挑战。Sambert-HifiGan 作为 ModelScope 平台上…

性能测试集成CI/CD实战:构建高效软件质量防线

在敏捷开发和DevOps浪潮中&#xff0c;性能测试不再是项目末期的“附加项”&#xff0c;而是CI/CD&#xff08;持续集成/持续部署&#xff09;管道的核心环节。本文面向软件测试从业者&#xff0c;深入探讨如何将性能测试无缝集成到CI/CD流程中&#xff0c;提升软件交付速度与质…

你的提示词够精准吗?Image-to-Video动作控制秘诀揭秘

你的提示词够精准吗&#xff1f;Image-to-Video动作控制秘诀揭秘 引言&#xff1a;从静态图像到动态叙事的跨越 在生成式AI快速演进的今天&#xff0c;Image-to-Video&#xff08;I2V&#xff09;技术正成为连接视觉创意与动态表达的关键桥梁。传统图像生成模型虽能创造逼真画面…

基于 SpringBoot + jQuery 实现留言板功能

基于 Spring Boot jQuery 实现留言板功能&#xff08;完整实战教程&#xff09; 本教程将手把手教你使用 Spring Boot 3.x 作为后端 jQuery 作为前端交互&#xff0c;实现一个简洁美观的留言板系统。功能包括&#xff1a; 查看所有留言&#xff08;分页可选&#xff09;提交…

【Java毕设源码分享】基于springboot+vue的校园失物招领平台的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

程序员副业新思路:用Image-to-Video接单变现

程序员副业新思路&#xff1a;用Image-to-Video接单变现 从技术到变现&#xff1a;Image-to-Video的商业潜力 在AI生成内容&#xff08;AIGC&#xff09;爆发式增长的今天&#xff0c;静态图像生成已趋于成熟&#xff0c;而动态视觉内容的需求正在快速崛起。短视频平台、广告创…

基于S7-200Smart PLC的恒压供水程序与485通讯样例+人机触摸屏操作实践案例

S7-200Smart 恒压供水程序样例485通讯样例 触 摸屏样例子。 1.此程序样例为一拖二恒压供水样例&#xff0c;采用S7-200Smart PLC和smart 700触摸屏人机与abb变频器485通讯执行变频器PID实现恒压供水&#xff0c;商品同样包含S7-200PLC程序 2.程序为实际操作项目案例程序&#…

Java后端如何对接AI?Image-to-Video API调用示例

Java后端如何对接AI&#xff1f;Image-to-Video API调用示例 &#x1f4cc; 背景与目标&#xff1a;Java服务集成图像转视频AI能力 随着生成式AI技术的快速发展&#xff0c;越来越多企业希望将动态内容生成能力嵌入现有系统。本文聚焦于一个实际工程场景&#xff1a;如何在Java…

度量标准重构:从“点击诱饵”到“知识节点”的评估体系设计

引言&#xff1a;评估危机与范式重构的必要性 在信息过载的数字时代&#xff0c;内容评估体系正面临系统性失效。传统以点击率&#xff08;CTR&#xff09; 为核心的度量标准&#xff0c;催生了“标题党”和浅层内容的泛滥&#xff1b;新兴的参与度指标&#xff08;停留时间、…

如何快速掌握STIX Two字体:面向学术写作新手的完整教程

如何快速掌握STIX Two字体&#xff1a;面向学术写作新手的完整教程 【免费下载链接】stixfonts OpenType Unicode fonts for Scientific, Technical, and Mathematical texts 项目地址: https://gitcode.com/gh_mirrors/st/stixfonts STIX Two字体是专为科学、技术和数学…