Spring Boot 配置文件详解 - application.yaml
Spring Boot 使用 application.yaml 或 application.properties 文件来配置应用程序的各种设置。相比于 application.properties,application.yaml 以更简洁和层次化的方式管理配置,特别适合复杂的配置结构。本文将详细介绍 application.yaml 的基本用法及常见配置项。

一、基本语法
YAML (YAML Ain't Markup Language) 是一种简洁的非标记语言,使用缩进表示层次关系。以下是 application.yaml 的基本语法结构:
# 注释
key: value # 简单键值对
# 层次结构
parent:
child1: value1
child2: value2
# 数组
list:
- item1
- item2
- item3
二、常见配置项详解
1. 应用基本信息
配置应用程序的基本信息,如名称和端口号:
spring:
application:
name: my-application # 应用名称
server:
port: 8080 # 服务器端口号
2. 日志配置
Spring Boot 默认使用 Logback 作为日志框架,可以通过 application.yaml 配置日志级别和输出格式:
logging:
level:
root: INFO # 根日志级别
com.example: DEBUG # 指定包的日志级别
pattern:
console: "%d{yyyy-MM-dd HH:mm:ss} - %msg%n" # 控制台日志输出格式
file:
path: /var/log/my-application # 日志文件路径
3. 数据源配置
配置数据库连接信息,包括驱动类、URL、用户名和密码:
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: root
password: password
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
minimum-idle: 5
maximum-pool-size: 20
idle-timeout: 30000
pool-name: HikariCP
4. JPA 配置
配置 JPA 相关属性,如是否生成 DDL 和显示 SQL:
spring:
jpa:
hibernate:
ddl-auto: update # 自动更新数据库表结构
show-sql: true # 显示 SQL 语句
properties:
hibernate:
format_sql: true # 格式化 SQL 语句
5. 多环境配置
Spring Boot 支持多环境配置,通过配置文件命名和 spring.profiles.active 属性实现。以下示例展示了默认配置和开发环境配置:
application.yaml (默认配置):
spring:
profiles:
active: dev # 激活的配置文件
datasource:
url: jdbc:mysql://localhost:3306/defaultdb
username: default
password: default
application-dev.yaml (开发环境配置):
spring:
datasource:
url: jdbc:mysql://localhost:3306/devdb
username: dev
password: dev
6. 自定义配置
可以在 application.yaml 中定义自定义配置,并在代码中使用 @Value 注解或 @ConfigurationProperties 绑定:
myapp:
feature:
enable: true
timeout: 5000
在代码中使用:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class MyAppConfig {
@Value("${myapp.feature.enable}")
private boolean featureEnable;
@Value("${myapp.timeout}")
private int timeout;
// getters and setters
}
7. 安全配置
配置 Spring Security 的相关属性:
spring:
security:
user:
name: user # 默认用户名
password: password # 默认密码
oauth2:
client:
registration:
google:
client-id: your-client-id
client-secret: your-client-secret
8. 国际化配置
配置应用的国际化支持,指定默认语言和可用语言:
spring:
messages:
basename: messages # 消息资源文件名
encoding: UTF-8
fallback-to-system-locale: false
cache-duration: 3600
i18n:
locales:
- en_US
- zh_CN
三、详细配置示例
下面是一个综合性的 application.yaml 配置示例,涵盖了上述多个配置项:
spring:
application:
name: my-application
profiles:
active: dev
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: root
password: password
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
minimum-idle: 5
maximum-pool-size: 20
idle-timeout: 30000
pool-name: HikariCP
jpa:
hibernate:
ddl-auto: update
show-sql: true
properties:
hibernate:
format_sql: true
security:
user:
name: user
password: password
oauth2:
client:
registration:
google:
client-id: your-client-id
client-secret: your-client-secret
messages:
basename: messages
encoding: UTF-8
fallback-to-system-locale: false
cache-duration: 3600
i18n:
locales:
- en_US
- zh_CN
logging:
level:
root: INFO
com.example: DEBUG
pattern:
console: "%d{yyyy-MM-dd HH:mm:ss} - %msg%n"
file:
path: /var/log/my-application
server:
port: 8080
myapp:
feature:
enable: true
timeout: 5000
四、总结
application.yaml 是 Spring Boot 中配置应用程序的核心文件。通过 YAML 语法,能够简洁、清晰地组织各类配置项,从基本信息到复杂的多环境配置,再到自定义参数,application.yaml 提供了丰富的配置能力。掌握 application.yaml 的用法,可以大大提升 Spring Boot 应用的开发效率和可维护性。希望本文对你理解和使用 application.yaml 配置文件有所帮助。


