以下内容来自豆包,只做记录。
在 Spring Boot(或 Spring 生态项目)中,application.yml 是核心配置文件,用于集中管理项目的所有配置信息,替代了传统 Spring 中繁琐的 XML 配置(如 applicationContext.xml),支持更简洁的 YAML 语法,实现 “配置与代码分离”,方便项目在不同环境(开发、测试、生产)中快速切换。
一、核心作用:统一管理配置
application.yml 的核心目标是将项目中所有需要动态调整的参数(如数据库连接、服务端口、第三方接口地址等)从代码中抽离,集中配置,避免硬编码带来的维护成本。
例如:无需修改代码,只需修改配置文件,即可切换数据库环境、调整日志级别、启用 / 禁用功能等。
二、常见配置场景
以下是 application.yml 典型的配置内容,覆盖项目开发的核心场景:
1. 服务器基础配置
# 服务器端口(默认8080,可自定义)
server:
port: 8081
# 上下文路径(访问路径前缀,如 http://localhost:8081/api/xxx)
servlet:
context-path: /api
# 连接超时时间
connection-timeout: 5000ms
2. 数据库配置(以 MySQL 为例)
# 数据源配置
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/my_db?useSSL=false&serverTimezone=UTC
username: root
password: 123456
# 连接池配置(如 HikariCP,Spring Boot 默认)
hikari:
maximum-pool-size: 10 # 最大连接数
minimum-idle: 5 # 最小空闲连接数
idle-timeout: 300000ms # 空闲连接超时时间
3. 框架特性配置(如 MyBatis、Spring MVC)
# MyBatis 配置
mybatis:
mapper-locations: classpath:mapper/**/*.xml # Mapper 映射文件路径
type-aliases-package: com.example.entity # 实体类包路径
configuration:
map-underscore-to-camel-case: true # 开启下划线转驼峰(如 user_name → userName)
# Spring MVC 配置(如静态资源、日期格式化)
spring:
mvc:
static-path-pattern: /static/** # 静态资源访问路径
jackson:
date-format: yyyy-MM-dd HH:mm:ss # 全局日期格式化
time-zone: GMT+8 # 时区配置
4. 日志配置(关联 Logback)
# 日志级别配置(覆盖 logback-spring.xml 的部分配置)
logging:
level:
root: INFO # 全局日志级别
com.example.service: DEBUG # 特定包的日志级别(服务层 debug 便于调试)
org.mybatis: INFO # MyBatis 日志级别
file:
name: logs/my-app.log # 日志文件路径(若未在 logback 中配置,可在此指定)
5. 多环境配置(配合 profiles)
Spring Boot 支持通过 spring.profiles.active 切换环境,application.yml 可指定默认激活的环境,或直接在配置中区分环境:
# 1. 指定默认激活的环境(开发环境)
spring:
profiles:
active: dev # 激活 application-dev.yml 配置
# 2. 直接在同一个文件中定义多环境(用 --- 分隔)
---
# 开发环境配置(profile=dev)
spring:
profiles: dev
datasource:
url: jdbc:mysql://localhost:3306/dev_db
---
# 生产环境配置(profile=prod)
spring:
profiles: prod
datasource:
url: jdbc:mysql://prod-server:3306/prod_db
username: prod_user
password: ${PROD_DB_PASSWORD} # 引用系统环境变量(避免明文密码)
6. 自定义业务配置
除了框架和服务器配置,还可在 application.yml 中定义业务相关的自定义参数,通过 Spring 的 @Value 注解或 @ConfigurationProperties 注入到代码中:
# 自定义业务配置
app:
name: user-service # 服务名称
version: 1.0.0 # 服务版本
third-party:
payment-url: https://api.payment.com/v1 # 第三方支付接口地址
timeout: 3000ms # 接口超时时间
代码中注入使用:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class AppConfig {
// 注入自定义配置
@Value("${app.name}")
private String appName;
@Value("${app.third-party.payment-url}")
private String paymentUrl;
// getter/setter
}
三、与 application.properties 的区别
Spring Boot 支持两种主流配置文件格式:application.yml(YAML 格式)和 application.properties(Properties 格式),核心功能一致,仅语法不同:
| 特性 | application.yml(YAML) | application.properties(Properties) |
|---|---|---|
| 语法 | 缩进敏感(用空格缩进,无分号),结构清晰 | 键值对格式(key=value),层级用 . 分隔 |
| 可读性 | 高(尤其适合复杂层级配置,如多环境) | 低(层级深时键名过长,如 spring.datasource.hikari.maximum-pool-size) |
| 示例 | server: port: 8081 | server.port=8081 |
实际开发中,application.yml 因简洁的层级结构更受欢迎,尤其是在多环境、复杂配置场景下。
四、加载顺序与优先级
Spring Boot 加载 application.yml 的顺序有优先级(高优先级配置会覆盖低优先级),常见顺序:
- 命令行参数(如
java -jar app.jar --server.port=8082,优先级最高) - 系统环境变量(如 Linux 的
export SPRING_PROFILES_ACTIVE=prod) - 项目内配置文件:
application-{profile}.yml(如application-prod.yml) >application.yml - 外部配置文件(如放在服务器
/config目录下的application.yml)
总结
application.yml 是 Spring Boot 项目的 “配置中枢”,核心价值在于:
- 解耦配置与代码:避免硬编码,修改配置无需改代码;
- 支持多环境切换:快速切换开发 / 测试 / 生产环境,无需重新打包;
- 简化配置:用简洁的 YAML 语法替代复杂 XML,降低维护成本;
- 灵活注入:支持通过注解将配置注入到代码,方便业务使用。
几乎所有 Spring Boot 项目都会以 application.yml 作为核心配置文件,是项目开发和部署的基础。
2万+

被折叠的 条评论
为什么被折叠?



