SpringBoot 配置文件概述
SpringBoot 的配置文件用于定义应用程序的参数、环境变量、数据库连接等配置信息。支持多种格式,如 application.properties 和 application.yml,默认存放在 src/main/resources 目录下。
配置文件类型
properties 格式
传统的键值对格式,适合简单配置。
示例:
properties
server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/db
spring.datasource.username=root
YAML 格式
层次化结构,适合复杂配置,可读性更强。
示例:
yaml
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost:3306/db
username: root
多环境配置
通过文件名区分不同环境(如开发、测试、生产)。
application-dev.yml(开发环境)application-test.yml(测试环境)application-prod.yml(生产环境)
激活指定环境:
properties
spring.profiles.active=dev
自定义配置
支持在配置文件中定义自定义参数,并通过 @Value 或 @ConfigurationProperties 注入。
示例:
yaml
app:
name: "MyApp"
timeout: 30
使用 @Value 注入
java
@Value("${app.name}")
private String appName;
使用 @ConfigurationProperties 批量注入
java
@ConfigurationProperties(prefix = "app")
public class AppConfig {
private String name;
private int timeout;
// getters & setters
}
配置文件优先级
SpringBoot 加载配置文件的优先级(从高到低):
- 项目根目录下的
/config子目录 - 项目根目录
- 类路径下的
/config目录 - 类路径根目录
高优先级配置会覆盖低优先级配置。
外部化配置
支持通过命令行参数、系统环境变量或外部文件覆盖默认配置。
示例(命令行激活环境并指定端口):
bash
java -jar app.jar --spring.profiles.active=prod --server.port=9090
动态配置刷新
结合 Spring Cloud Config 或 Nacos 等配置中心,可实现配置动态更新。需添加 @RefreshScope 注解:
java
@RefreshScope
@RestController
public class DemoController {
@Value("${app.message}")
private String message;
}