当前位置: 代码网 > it编程>编程语言>Java > SpringBoot配置入门教程之application.yml与properties全面对比

SpringBoot配置入门教程之application.yml与properties全面对比

2026年08月27日 Java 我要评论
配置是 spring boot 的灵魂。本文将彻底讲清 yml 与 properties 的区别、多环境配置、配置优先级和类型安全的配置绑定,帮你避开 90% 的配置坑。一、为什么 spring bo

配置是 spring boot 的灵魂。本文将彻底讲清 yml 与 properties 的区别、多环境配置、配置优先级和类型安全的配置绑定,帮你避开 90% 的配置坑。

一、为什么 spring boot 4 更推荐 yml?

spring boot 4 中,官方示例和自动配置默认都偏向 yaml

properties 写法(老派)

server.port=8081
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root

yml 写法(现代、推荐)

server:
  port: 8081
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test
    username: root
    password: root

yml 的优势:

  • 层级清晰,一眼看懂结构
  • 复用前缀,减少重复
  • 天然支持复杂对象 / list / map
  • idea 支持自动补全和校验

结论:新项目一律用 yml,老项目维护才用 properties。

二、yaml 语法三大铁律(写错就启动失败)

铁律 1:冒号后面必须有空格

❌ 错误:

server:
  port:8081

✅ 正确:

server:
  port: 8081

铁律 2:使用空格缩进,禁止使用 tab

spring boot 4 对此非常严格,缩进不一致会直接报错。

铁律 3:字符串默认不需要引号

app:
  name: spring boot 4 demo

特殊字符才需要引号:

app:
  description: "hello: spring boot"

三、多环境配置:dev / test / prod(企业级必备)

这是面试和实战必问点

核心思想

  • 一个主配置
  • 多个环境配置
  • 通过 spring.profiles.active 切换

文件命名规则

application.yml              # 主配置
application-dev.yml          # 开发环境
application-test.yml         # 测试环境
application-prod.yml         # 生产环境

主配置文件(application.yml)

spring:
  profiles:
    active: dev

表示当前激活 dev 环境。

各环境示例

开发环境(application-dev.yml)

server:
  port: 8080
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/dev_db
    username: dev
    password: dev123

生产环境(application-prod.yml)

server:
  port: 80
spring:
  datasource:
    url: jdbc:mysql://prod-db:3306/prod_db
    username: ${db_user}
    password: ${db_password}

生产环境推荐:

  • 使用环境变量
  • 不写死密码

启动时指定环境(非常常用)

java -jar app.jar --spring.profiles.active=prod

四、配置优先级(非常重要!记不住容易踩雷)

spring boot 4 加载配置的优先级从高到低

命令行参数

--server.port=8081

jvm 系统属性

-dserver.port=8081

操作系统环境变量

application-{profile}.yml

  • application.yml
  • @propertysource 注解
  • 默认属性

结论越晚加载,优先级越高;外部配置 > 内部配置。

五、自定义配置与 @value(简单但不推荐)

定义配置

app:
  author: 张三
  version: 1.0.0

读取配置

@value("${app.author}")
private string author;
@value("${app.version}")
private string version;

@value 的缺点

  • 不支持复杂对象
  • 不支持校验
  • 配置分散,难维护

企业级项目不推荐大量使用 @value

六、@configurationproperties(强烈推荐,类型安全)

这是 spring boot 最优雅的配置方式

定义配置类

@component
@configurationproperties(prefix = "app")
public class appproperties {

    private string author;
    private string version;
    private list<string> features = new arraylist<>();

    // getter / setter
}

yml 配置

app:
  author: 张三
  version: 4.0.0
  features:
    - aot
    - graalvm
    - native image

使用配置

@restcontroller
public class democontroller {

    @autowired
    private appproperties appproperties;

    @getmapping("/info")
    public appproperties info() {
        return appproperties;
    }
}

优点:

  • 类型安全
  • 支持 idea 自动补全
  • 支持校验(jsr‑303)
  • 结构清晰,易维护

七、配置校验(生产级必备)

@component
@configurationproperties(prefix = "app")
@validated
public class appproperties {

    @notblank
    private string author;

    @min(1)
    private int versioncode;

    // getter / setter
}

启动时会自动校验,配置错误直接启动失败,避免线上事故。

八、spring boot 4 中的新变化(补充)

  • yml 解析器更严格(容错率更低)
  • 对 kubernetes configmap / secret 支持更友好
  • aot 模式下配置处理更早,启动更快

九、常见配置坑位总结(血泪教训)

❌ 坑1:缩进不一致

现象:启动报错 while scanning a simple key

✅ 解决:统一使用空格,idea 开启 yaml 校验

❌ 坑2:环境配置未生效

现象:配置写了,但读不到

✅ 解决:检查 spring.profiles.active

❌ 坑3:生产环境密码写死

现象:代码泄露,数据库被删

✅ 解决:使用环境变量或配置中心

❌ 坑4:@value 泛滥

现象:配置分散,难以维护

✅ 解决:改用 @configurationproperties

十、本篇总结(重点记住这 4 点)

spring boot 4 首选 yml

多环境配置是标配

配置优先级:命令行 > jvm > 环境变量 > yml

@configurationproperties 是企业级首选

到此这篇关于springboot配置入门教程之application.yml与properties全面对比的文章就介绍到这了,更多相关springboot配置文件内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com