Spring Boot 属性配置文件

news/2026/1/9 3:33:12/文章来源:https://www.cnblogs.com/Jing61/p/19448023

Spring Boot 属性配置文件

Spring Boot 的属性配置文件是项目配置的核心,支持灵活的文件格式、加载规则和数据类型,本文将从文件类型、加载顺序、配置属性类型、实际使用示例等方面全面介绍。

配置文件类型

Spring Boot 支持两种核心配置文件格式,分别是 properties(传统格式)和 yml(YAML,简洁格式),可根据项目习惯选择。

properties 格式(键值对)

传统的键值对配置方式,语法简单直观,适合简单配置场景。

# 格式:key=value
spring.application.name=springboot
spring.application.version=1.0

yml 格式(层次结构)

以数据为中心,采用缩进表示层次关系,结构清晰,适合复杂配置场景(注意:缩进必须用空格,不能用 Tab)。

spring:application:name: springbootversion: 1.0

优先级说明

  • 若项目中同时存在 propertiesyml 文件:
    • 无配置冲突时,两者配置会自动合并;
    • 有配置冲突时,properties 优先级高于 yml(即 properties 中的配置会覆盖 yml 中同名配置)。

配置文件加载顺序

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

  1. 当前项目根目录下的 /config 子目录(./config/
  2. 当前项目根目录(./
  3. 类路径(classpath)下的 /config 子目录(classpath:/config/
  4. 类路径(classpath)根目录(classpath:/

多环境配置

支持通过 profile 区分不同环境(如开发、测试、生产),配置文件命名规则为:application-{profile}.yml(或 properties)。

  • 示例:开发环境 application-dev.yml、生产环境 application-prod.yml
  • 激活方式:在主配置文件(application.yml)中添加 spring.profiles.active=dev(指定激活 dev 环境)

配置属性类型及语法

Spring Boot 支持多种数据类型的配置,包括基本类型、引用属性、数组/列表等,以下是详细示例(以 yml 格式为主)。

基本类型

支持字符串、数值、布尔型,字符串可选择是否转义。

# 字符串(直接赋值)
name: peppa# 字符串(单引号 '':不转义特殊字符)
name2: 'peppa\tfemale\t5'  # 输出结果:peppa\tfemale\t5(\t 不转义为制表符)# 字符串(双引号 "":转义特殊字符)
name3: "peppa\tfemale\t5"  # 输出结果:peppa  female  5(\t 转义为制表符)# 引用其他属性值(通过 ${key} 引用)
intro: hello, everyone, my name is ${name}# 数值类型(整数、小数均可)
age: 5# 布尔型(true/false 不区分大小写)
isComputer: false

数组/列表类型

通过 - 元素值 表示数组元素。

hobby:  # 数组类型- football- basketball- swing

map

student:name: peppaage: 5gender: femalebirth: 2018-01-01  # 日期类型(Spring Boot 可自动转换为 LocalDate)isComputer: truehobby:  # 数组类型- football- basketball- swing

常用项目配置(示例)

server:port: 8080  # 配置项目启动端口(默认 8080)servlet:context-path: /springboot  # 配置项目访问根路径(默认无,访问需加 /springboot)

获取配置文件中的值(实战示例)

场景 1:通过 @Value 注解获取单个属性值

适合获取少量分散的配置属性,步骤如下:

添加 Web 依赖

需在 build.gradle 中添加 spring-boot-starter-web 依赖(支持 HTTP 接口和 Controller):

dependencies {// 其他依赖...implementation 'org.springframework.boot:spring-boot-starter-web'
}

编写 Controller 类

通过 @Value("${key}") 注解绑定配置属性:

package com.springboot.controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.Map;@RestController  // 标识为 REST 接口控制器(返回 JSON 数据)
public class PropertyController {// 绑定配置文件中的属性(key 需与配置文件一致)@Value("${name}")private String name;@Value("${age}")private int age;@Value("${name2}")private String name2;@Value("${name3}")private String name3;@Value("${isComputer}")private boolean isComputer;@Value("${intro}")private String intro;// 定义接口:访问 /property 可获取配置属性@RequestMapping("/property")public Map<String, Object> getProperties() {return Map.of("name", name,"age", age,"name2", name2,"name3", name3,"isComputer", isComputer,"intro", intro);}
}

测试接口

启动项目后,访问地址:http://127.0.0.1:8080/property(若配置了 context-path,则访问 http://127.0.0.1:8080/springboot/property),返回结果如下:
image

场景 2:通过 @ConfigurationProperties 绑定 JavaBean(批量获取)

适合获取一组相关的配置属性(如上述 student 配置),步骤如下:

编写实体类(JavaBean)

使用 @ConfigurationProperties(prefix = "前缀") 批量绑定属性,配合 Lombok 的 @Data 简化代码:

package com.springboot.entity;import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;import java.time.LocalDate;@Data  // Lombok 注解:自动生成 getter/setter、toString 等方法
@Component  // 注册为 Spring 组件,让 Spring 管理
@ConfigurationProperties(prefix = "student")  // 绑定配置文件中前缀为 student 的属性
public class Student {private String name;private int age;private String gender;private LocalDate birth;  // 自动绑定日期格式(yyyy-MM-dd)private boolean isComputer;private String[] hobby;  // 数组类型,绑定 hobby 数组
}

改造 Controller 类

通过 @Resource 注入 JavaBean,直接返回:

package com.springboot.controller;import com.springboot.entity.Student;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class PropertyController {// 注入 Student 组件(Spring 自动绑定配置属性)@Resourceprivate Student student;@RequestMapping("/property")public Student getProperties() {return student;  // 直接返回 Student 对象(自动转为 JSON)}
}

测试接口

启动项目后,访问相同地址,返回结果如下:
image

关键说明

  1. @Value@ConfigurationProperties
    • @Value:适合单个、零散的属性配置,支持 SpEL 表达式(如 ${name});
    • @ConfigurationProperties:适合批量、结构化的属性配置,支持自动类型转换(如日期、数组),配置有误时会有明确提示。
  2. 配置文件编码:建议统一使用 UTF-8,避免中文乱码。
  3. 日期格式:yml 中配置日期时,推荐使用 yyyy-MM-dd 格式,Spring Boot 可自动转换为 LocalDate 类型。

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

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

相关文章

广告素材按产品图 → 场景视频 →UGC 合集顺序测试更高效?

Instagram 广告素材,到底要不要按“产品图 → 场景视频 → UGC 合集”死磕? 说真的,每次看到那种“绝对真理”式的营销公式,我脑子里都会冒出一个问号。特别是最近刷到好几次关于 Instagram 广告素材测试顺序的讨论…

事务管理最全指南:嵌套事务、传播机制与失效场景深度复盘

&#x1f680; 前言&#xff1a;为什么事务管理如此重要&#xff1f; 在现代企业级应用开发中&#xff0c;数据一致性是系统的生命线。想象一个电商场景&#xff1a;用户下单购买商品&#xff0c;系统需要同时完成以下操作&#xff1a; &#x1f6d2; 扣减库存&#xff1a;商…

美国地区长文广告的关键词密度最佳范围是什么?

聊透Twitter长文广告:别再纠结那个所谓的“最佳关键词密度”了 嘿,朋友。咱们今天不整那些虚头巴脑的理论,就坐下来像喝咖啡一样,聊聊你在Twitter上发长文广告这件事。我知道你肯定在某个SEO论坛或者某个“营销大师…

2026年靠谱涉外离婚律所排名,新测评精选涉外离婚律所推荐 - 工业品网

为帮客户高效锁定适配自身需求的涉外离婚法律服务合作伙伴,避免选型走弯路,我们从涉外法律专业度(如国际私法适配、跨境司法协作)、案件处理成功率(含财产分割、抚养权争夺)、全周期服务质量(覆盖前期咨询到后期…

Pandas简介 - 努力-

Pandas简介Pandas简介一、Pandas简介 Pandas是Python里处理数据的神器,尤其适合表格数据的分析和操作。它用起来简单高效,能帮你快速完成数据清洗、分析和可视化,是数据科学领域的必备工具。 核心功能: ‌1). 数据…

程序员必看!大模型技术学习路径与实战指南,建议收藏

文章为普通人提供了学习大模型技术的系统路径&#xff0c;涵盖提示词工程、RAG技术、LangChain应用、模型微调、AI Agent开发及多模态学习等关键领域。详细介绍了各项技术的原理、实践方法和应用场景&#xff0c;对比了AI测试与传统测试的区别&#xff0c;强调了数据质量验证、…

2026年山东高品质房企服务口碑排名:金茂山东市场口碑如何? - myqiye

TOP1 推荐:青岛金茂置业有限公司(金茂山东) 推荐指数:★★★★★ 口碑评分:山东市场口碑房企 专业能力:依托中国金茂央企背景,以释放城市未来生命力为核心使命,构建科技住宅+城市运营+生活服务三维能力体系。科…

JAVA打造:同城服务预约陪诊医院陪护系统

以下是一个基于JAVA技术打造的同城服务预约陪诊医院陪护系统的详细方案&#xff0c;涵盖系统架构、核心功能模块、技术实现细节、创新亮点及商业价值分析&#xff1a;一、系统架构设计1. 整体架构采用微服务架构&#xff0c;基于Spring Boot Spring Cloud Alibaba构建&#xf…

centos7安装redis3.0以及phpredis扩展

centos7安装redis3.0以及phpredis扩展Posted on 2026-01-06 15:41 pcwanli 阅读(0) 评论(0) 收藏 举报来源:https://blog.csdn.net/weixin_41608627/article/details/790123721.安装redis: #下载redis#wget h…

2026切割锯条品牌厂家TOP5权威推荐:定制实力厂商深度测评 - 工业品牌热点

工业制造领域中,切割精度与耗材成本直接影响企业利润,优质切割锯条成为生产环节的核心刚需。2023年数据显示,国内金属切割耗材市场规模超120亿元,年增速18%,但32%的企业投诉集中在锯条断裂、切割粗糙、维护复杂三…

找不到工作就好好学一下这份16W字Java面试合集

倒霉的时候总会想起福祸相依&#xff0c;但你会发现倒霉起来没完没了&#xff0c;就是看不到传说中的“福”年初被裁了&#xff0c;我会安慰自己&#xff0c;此处不留爷自有留爷处&#xff0c;然后踏入找工作的行列&#xff1b;没有面试邀请&#xff0c;我会告诉自己&#xff0…

2026年北京配近视眼镜店服务排名,靠谱近视眼镜店服务选哪家推荐 - 工业设备

为帮配镜人高效锁定适配自身需求的近视眼镜店,避免掉入低价劣质、验光不准、售后无门的行业坑,我们从专业验光能力(如资质认证、流程标准化)、产品品质保障(含品牌授权、防伪体系)、服务效率体验(覆盖验光到取镜…

100道软件功能测试面试题(针对刚毕业的人员)

基础知识 1. 什么是软件测试&#xff1f; 答案&#xff1a;软件测试是通过执行程序来查找软件错误的过程&#xff0c;目的是验证软件是否满足用户需求和预期结果。 2. 什么是黑盒测试&#xff1f; 答案&#xff1a;黑盒测试是一种测试方法&#xff0c;测试人员不关心内部实…

楼宇ICT规划实施标准:公区架构、基础设施与管理的稳定性保障

楼宇ICT系统是支撑楼宇智能化运维的核心基础设施&#xff0c;其规划实施标准的科学性直接决定了设施稳定性与服务可靠性。本文从公区规划架构、基础设施实施标准、管理标准三个维度&#xff0c;阐述保障楼宇ICT设施和服务稳定性的关键路径。 公区规划架构设计 公区是楼宇内人员…

Photoshop AVIF插件全面解析:开启图像压缩新纪元

Photoshop AVIF插件全面解析&#xff1a;开启图像压缩新纪元 【免费下载链接】avif-format An AV1 Image (AVIF) file format plug-in for Adobe Photoshop 项目地址: https://gitcode.com/gh_mirrors/avi/avif-format 想要让Photoshop图像优化达到新的高度吗&#xff1…

2026年数控锯床供应商推荐,数控锯床靠谱生产商与不错的数控锯床工厂全解析 - 工业推荐榜

在金属加工领域,锯床作为下料环节的核心设备,其效率、精度与稳定性直接决定企业生产链的流畅度与利润空间。面对市场上品类繁杂的数控锯床产品,如何挑选到真正靠谱的供应商?以下依据技术实力、服务口碑与行业适配性…

靠谱的大棚草帘卷帘机哪家厂家好?支持定制的保温被卷帘机加工厂专业排名 - 工业品网

大棚卷帘机是温室大棚保温系统的中枢神经,直接影响棚温稳定与种植效率,选对靠谱厂家可避免冬季卷不动、夏季漏雨锈的坑。本文从定制适配性、核心性能稳定性、售后响应速度、客户复购率、行业口碑五大维度,测评全国2…

震惊,血的教训

震惊,血的教训千万不要直接用学长的实验报告,会出问题的,里面的日期什么的都不对。

ComfyUI集成Z-Image全流程:可视化节点操作让AI绘画更高效

ComfyUI集成Z-Image全流程&#xff1a;可视化节点操作让AI绘画更高效 在内容创作节奏日益加快的今天&#xff0c;设计师、运营人员甚至开发者都面临着一个共同挑战&#xff1a;如何快速生成高质量、符合语义意图的视觉素材&#xff1f;传统AI绘画工具虽然能出图&#xff0c;但往…

超详细的常见漏洞代码审计方法,网络安全必看的零基础入门到精通教程!

文章目录 前言代码审计的思路常见漏洞的代码审计1. HTTP响应头截断修复方案&#xff1a;2. 硬编码问题3. SQL注入4. maven不安全模块5. 服务端请求伪造&#xff08;SSRF&#xff09;6. 路径遍历7. 命令注入 常见代码审计工具&#xff0c;代码审计为什么不能只用工具&#xff1f…