Spring Boot支持哪些类型的自定义配置文件?
Spring Boot 支持多种类型的自定义配置文件,以满足不同场景下的配置需求。主要支持的配置文件类型和格式如下:
1. 配置文件格式
Spring Boot 支持两种主流的配置文件格式:
(1)Properties 格式(.properties
)
这是最常见的配置格式,采用键值对形式:
# 服务器配置
server.port=8080
server.context-path=/api# 自定义应用配置
app.name=MyApplication
app.version=2.1.0
app.feature.notifications=true
(2)YAML 格式(.yml
或 .yaml
)
YAML 格式更适合复杂结构和嵌套配置,语法更简洁:
# 服务器配置
server:port: 8080context-path: /api# 自定义应用配置
app:name: MyApplicationversion: 2.1.0feature:notifications: true
注意:YAML 格式对缩进敏感(使用空格,不支持 Tab),且键值对冒号后需加空格。
2. 按用途分类的自定义配置文件
(1)主配置文件
默认放在 src/main/resources
目录下,Spring Boot 会自动加载:
application.properties
application.yml
(或application.yaml
)
这是最基础的配置文件,通常存放全局配置(如服务器端口、默认日志级别等)。
(2)环境特定配置文件
按环境区分的配置文件,命名规则为 application-{profile}.properties
或 application-{profile}.yml
,例如:
application-dev.properties
(开发环境)application-test.yml
(测试环境)application-prod.properties
(生产环境)
激活方式:
- 在主配置文件中指定:
spring.profiles.active=dev
- 启动时通过命令行参数:
java -jar app.jar --spring.profiles.active=prod
(3)自定义命名的配置文件
可以创建任意名称的配置文件(如 db-config.properties
、third-party.yml
),通过以下方式加载:
① 通过 @PropertySource
注解
在配置类上指定文件路径(仅支持 properties
格式):
@Configuration
@PropertySource("classpath:config/db-config.properties") // 加载类路径下的配置
public class DbConfig {// 绑定配置属性
}
② 通过主配置文件导入
在 application.properties
或 application.yml
中通过 spring.config.import
导入(支持多种格式):
# 导入多个配置文件(支持properties/yml)
spring.config.import=classpath:config/db-config.properties, classpath:config/mq-config.yml
③ 外部配置文件
Spring Boot 会自动扫描外部路径的配置文件(优先级高于内部文件),常见位置:
- 项目根目录下的
config
文件夹 - 项目根目录
- 操作系统用户目录的
.config
文件夹
(4)加密配置文件(Spring Cloud Config)
对于敏感配置(如数据库密码、API 密钥),可使用 Spring Cloud Config 配合加密工具(如 JCE),将配置文件加密存储,运行时自动解密。
3. 特殊场景的配置文件
(1)测试环境配置
放在 src/test/resources
目录下的配置文件(如 application-test.properties
),仅在测试时生效,会覆盖主目录中同名配置。
(2)多模块项目配置
在多模块项目中,可在各模块的 src/main/resources
下放置模块专属配置文件,通过 @PropertySource
或 spring.config.import
按需加载。
总结
Spring Boot 对自定义配置文件的支持非常灵活,核心特点包括:
- 支持
properties
和YAML
两种格式 - 可按环境、功能拆分配置文件
- 支持内部、外部、测试专用等多种场景
- 提供注解和配置项两种加载方式
根据项目复杂度,可选择合适的配置文件类型和组织方式,建议优先使用 YAML 格式(结构清晰)和环境特定配置(便于多环境管理)。