java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot配置文件

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

作者:gis开发之家

配置是 Spring Boot 的灵魂,本文将彻底讲清 yml 与 properties 的区别、多环境配置、配置优先级和类型安全的配置绑定,帮你避开 90% 的配置坑,希望对大家有所帮助

配置是 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 的优势:

结论:新项目一律用 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(企业级必备)

这是面试和实战必问点

核心思想

文件命名规则

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

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

五、自定义配置与 @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;
    }
}

优点:

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

@Component
@ConfigurationProperties(prefix = "app")
@Validated
public class AppProperties {

    @NotBlank
    private String author;

    @Min(1)
    private int versionCode;

    // getter / setter
}

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

八、Spring Boot 4 中的新变化(补充)

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

❌ 坑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配置文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文