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

SpringBoot 配置文件核心用法:Properties 与 YAML

SpringBoot 配置文件管理涉及 Properties 与 YAML 两种主流格式。Properties 采用键值对结构,适合简单配置;YAML 为树形结构,可读性强且支持复杂对象与集合。两者共存时 Properties 优先级更高,建议统一格式。配置读取常用 @Value 注解获取简单值,而复杂对象绑定推荐使用 @ConfigurationProperties。此外,@PostConstruct 可用于 Bean 初始化后的前置处理。开发中需注意文件编码及 YAML 缩进规范,避免解析错误。

邪神洛基发布于 2026/3/23更新于 2026/6/1017 浏览
SpringBoot 配置文件核心用法:Properties 与 YAML

SpringBoot 配置文件概览

SpringBoot 定义了规范的配置文件格式,用于集成其他框架并集中管理项目配置。典型场景包括自定义服务端口、数据库连接信息、第三方系统密钥以及日志配置等。

常见配置场景

  1. 项目启动端口 SpringBoot 内置 Tomcat 服务器,默认端口为 8080。若端口被占用,需通过配置文件修改。
  2. 数据库连接信息 持久层框架(如 MyBatis、JPA)依赖 JDBC 封装,不同环境需配置不同的连接参数。

配置文件格式选择

SpringBoot 支持三种格式:application.properties、application.yml 和 application.yaml。

  • 优先级:理论上两者可共存,但 properties 的优先级高于 yml/yaml。若配置冲突,以 properties 为准。
  • 建议:实际开发中建议统一使用一种格式(推荐 yml),便于维护。
  • 加载机制:启动时自动从 classpath 加载。也可通过 spring.config.name 指定路径,参考 Spring Boot 官方文档。

注意:切换文件格式时,IDEA 有时会出现编码识别问题导致乱码,建议检查编辑器设置或手动指定 UTF-8 编码。

Properties 配置详解

基本语法

采用键值对形式 key=value,注释使用 #。

# 配置项目端口号
server.port=8080
# 配置数据库连接信息
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
读取配置

使用 @Value 注解配合 ${key} 格式读取。

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class PropertiesController {
    @Value("${mykey.key1}")
    private String key1;

    @RequestMapping("/key")
    public String key {
          + key1;
    }
}
()
return
"读取到值:"

配置示例:mykey.key1 = bite 访问 /key 接口即可返回对应值。

局限性

当配置层级较深时,properties 会产生大量冗余的 Key,可读性较差。此时推荐使用 YAML 格式。

YML 配置详解

YAML (Yet Another Markup Language) 是树形结构的配置文件,语法更简洁。

基本语法
  • 键值对:key: value,冒号后必须跟空格。
  • 缩进:严格遵循缩进规则,错误会导致解析失败。
  • 数据类型:支持字符串、数字、布尔值、空值 (null 或 ~)、日期等。
# 基础键值对
server:
  port: 8080
  host: localhost

# 字符串(特殊字符需引号)
name: "zhangsan"
remark: 'hello\nworld'

# 集合/数组
user:
  hobbies:
    - 篮球
    - 游泳
  tags: [Java, SpringBoot]

# 嵌套对象
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/test
    username: root
    password: 123456
读取配置

对于简单值仍可用 @Value,但读取复杂对象、集合或 Map 时,建议使用 @ConfigurationProperties。

配置对象示例:

student:
  id: 1
  name: Java
  age: 18

Java 代码:

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Data
@Component
@ConfigurationProperties(prefix = "student")
public class Student {
    private int id;
    private String name;
    private int age;
}

配置集合示例:

dbtypes:
  name:
    - mysql
    - sqlserver

Java 代码:

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.List;

@Data
@Component
@ConfigurationProperties("dbtypes")
public class ListConfig {
    private List<String> name;
}
优缺点对比
  • 优点:可读性高,支持复杂数据结构(对象、数组、Map),跨语言兼容性好。
  • 缺点:对格式敏感,缩进错误易引发异常;不适合极复杂的配置逻辑。

补充说明:@PostConstruct

@PostConstruct 是 Java EE 标准注解,Spring 也完全支持。它的作用是在 Bean 实例创建且依赖注入完成后,自动执行标注的方法。

import javax.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class UserService {
    @Autowired
    private ConfigService configService;

    @PostConstruct
    public void init() {
        // 此时 configService 已完成注入,可安全使用
        String config = configService.getConfig();
        System.out.println("Bean 初始化完成,加载配置:" + config);
    }
}

注意点:

  1. 方法必须无参数、无返回值(void)、非静态。
  2. 执行时机晚于 @Autowired,早于业务调用。
  3. 适用于初始化数据、预加载缓存等前置操作。

目录

  1. SpringBoot 配置文件概览
  2. 常见配置场景
  3. 配置文件格式选择
  4. Properties 配置详解
  5. 基本语法
  6. 配置项目端口号
  7. 配置数据库连接信息
  8. 读取配置
  9. 局限性
  10. YML 配置详解
  11. 基本语法
  12. 基础键值对
  13. 字符串(特殊字符需引号)
  14. 集合/数组
  15. 嵌套对象
  16. 读取配置
  17. 优缺点对比
  18. 补充说明:@PostConstruct
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 基于 Docker 部署 Ollama 与 AnythingLLM 构建本地 LLM Agent
  • 数据库 SQL 防火墙:内核级防护与注入防御机制
  • Spring Boot 数据仓库与 ETL 工具集成实战
  • ERNIE-4.5-0.3B 轻量模型部署指南与性能测评
  • 麦橘超然 Flux 本地部署与低显存优化实战
  • 基于深度学习与强化学习融合的逆变器系统:联邦学习支持分布式协同控制建模
  • 手机浏览器 Console 日志同步至电脑调试指南
  • 二分答案专题实战:木材加工与砍树问题解析
  • 通义万相 2.1 多模态生成技术解析与应用前景
  • Whisper-WebUI 语音转文字工具部署与使用教程
  • 网络安全行业前景分析与 Java 开发对比及入门指南
  • Stable Diffusion 本地部署与 WebUI 安装详解
  • LLaMA Factory+QLoRA 微调 70B 模型实测
  • HarmonyOS 6 Navigation 组件导航生命周期解析
  • C++ 位运算技巧与常见算法题解
  • 通义万相 2.1 多模态 AI 生成技术解析与应用前景
  • Android 转场动画演进历程与实战解析
  • Open WebUI 下载模型文件的默认存储路径
  • VS Code Python 解释器选择报错解决方法
  • Rust 异步编程实战:构建高性能网络应用

相关免费在线工具

  • 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