【Maven】配置文件
Maven配置文件
application.yaml / .yml / .properties
默认加载路径
Spring Boot 默认会在 classpath 路径(通常是 src/main/resources/
)下查找以下配置文件:
application.yml
application.yaml
application.properties
主要用途
这些配置文件用于定义应用的运行参数,包括但不限于:
- 服务器端口配置
- 数据库连接参数
- 日志级别设置
- 缓存配置
- 跨域设置
- 国际化配置
配置读取方式
Spring Boot 提供了多种方式来访问这些配置:
1. 注解注入
@Value("${配置键名}")
private String configValue;
2. 对象绑定
@Configuration
@ConfigurationProperties(prefix = "myapp.mail")
public class MailProperties {private String host;private int port;private String username;// getters/setters...
}
对应的配置示例:
myapp:mail:host: smtp.example.comport: 587username: admin@example.com
3. 自动配置
Spring Boot 的自动配置机制会自动读取并使用这些配置
# 内嵌服务器配置
server:port: 8080servlet:context-path: /api# 数据源配置
spring:datasource:url: jdbc:mysql://localhost:3306/mydbusername: rootpassword: secret
这些配置会被Spring Boot的自动配置模块自动处理,无需手动注入。
配置文件格式比较
文件名 | 本质 | 是否推荐 | 备注 |
---|---|---|---|
application.yaml | YAML 格式(新版) | ✅ 推荐 | 最常用、结构清晰、支持多文档特性 |
application.yml | YAML 格式 | ✅ 推荐 | 功能与.yaml完全相同,取决于团队习惯(部分编辑器对.yaml支持更好) |
application.properties | Properties 格式 | ⚠️ 可选 | 传统的键值对格式,老项目常用,缺乏层次结构 |
1. YAML 格式 (.yaml/.yml)
优势:
- 层次化结构(使用缩进表示层级)
- 支持复杂数据类型(列表、Map等)
- 支持多文档特性(用
---
分隔) - 更易于阅读和维护
示例:
server:port: 8080servlet:context-path: /apispring:datasource:url: jdbc:mysql://localhost:3306/mydbusername: rootpassword: secret
2. Properties 格式
特点:
- 平面键值对结构
- 需要手动管理层级(通过.表示)
- 适合简单配置场景
示例:
server.port=8080
server.servlet.context-path=/api
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=secret
选择建议
- 新项目:优先使用 .yaml 格式(推荐使用.yaml扩展名而非.yml)
- 老项目维护:保持原有格式(通常为.properties)
- 团队协作:统一团队内的配置文件格式
- 特殊需求:需要多文档配置时,必须使用YAML格式
文件名解析规则
Spring Boot 会自动解析配置文件的名称格式:
application-{profile}.yml
- {profile} 部分就是环境标识(例如 dev、test、prod)。
- 当激活某个 Profile(如 dev)时,Spring Boot 会加载:
- 通用配置:application.yml(所有环境共享)
- 环境专属配置:application-dev.yml(仅 dev 环境生效),并覆盖通用配置中的相同属性。
多环境application.yml最小可运行配置,其他参数覆盖:
# ===================== 基础必选配置 =====================
spring:application:name: my-app # 应用标识(微服务/监控必需)profiles:active: local # 默认环境(安全考虑:建议设为local/dev而非prod)# ===================== 可选增强配置 =====================
# 调试模式(开发时建议true)
debug: false# 日志默认级别(生产环境可覆盖)
logging:level:root: infoorg.springframework.web: warn# 全局线程池(示例)
task:pool:core-size: 4max-size: 10
常见参数
1.应用标识及环境
spring:application:name: my-app # 应用标识(微服务/监控必需)profiles:active: local # 默认环境(安全考虑:建议设为local/dev而非prod)
2.端口
server:port: 48097
3.数据库
spring:datasource:url: jdbc:mysql://localhost:3306/dev_db?useSSL=false&serverTimezone=UTCusername: dev_userpassword: dev123