SpringBoot application.yml 文件多环境配置
·
通过 application.yml 中的 spring.profiles.active 来指定激活哪个环境的配置文件。以下是具体实现步骤:
1. 新建三个配置文件
在项目的 src/main/resources 目录下,创建三个配置文件:
① 主配置文件:application.yml
用于指定激活的环境(test 或 prod),并可存放公共配置(所有环境共享的配置):
# application.yml
spring:
profiles:
active: test # 这里指定激活哪个环境,test 对应测试环境,prod 对应生产环境
# 以下是公共配置(所有环境都会用到的配置,如服务端口、日志级别等)
server:
port: 8080 # 若各环境端口不同,可在对应环境配置中覆盖
logging:
level:
root: INFO
② 测试环境配置:application-test.yml
存放测试环境特有的配置(如测试数据库地址、测试服务域名等):
# application-test.yml
# 测试环境:本地或测试服务器配置
custom:
domain: "http://test-server:10015" # 测试环境的服务域名
file:
upload-path: "/data/test/upload" # 测试环境文件上传路径
database:
url: "jdbc:mysql://test-db:3306/test_db"
username: "test_user"
password: "test_pwd"
③ 生产环境配置:application-prod.yml
存放生产环境特有的配置(如生产数据库地址、生产服务域名等):
# application-prod.yml
# 生产环境:正式服务器配置
custom:
domain: "http://prod-server:10015" # 生产环境的服务域名
file:
upload-path: "/data/prod/upload" # 生产环境文件上传路径
database:
url: "jdbc:mysql://prod-db:3306/prod_db"
username: "prod_user"
password: "prod_pwd" # 生产环境密码建议通过环境变量注入,此处仅示例
2. 配置生效逻辑
- 激活规则:
application.yml中的spring.profiles.active=test会自动加载application-test.yml中的配置;若改为spring.profiles.active=prod,则加载application-prod.yml。 - 配置优先级:环境配置文件(test/prod)中的配置会覆盖主配置文件(
application.yml)中相同的配置(如端口、域名等);不同的配置会合并生效。
3. 在代码中使用配置
通过 @Value 或 @ConfigurationProperties 注解读取配置,Spring 会自动根据激活的环境获取对应的值:
示例:读取域名配置
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class EnvConfig {
// 读取环境中的 domain 配置(test 或 prod 中的值)
@Value("${custom.domain}")
private String domain;
// 其他配置...
@Value("${custom.file.upload-path}")
private String fileUploadPath;
// getter/setter
public String getDomain() {
return domain;
}
}
4. 动态切换环境(无需修改配置文件)
实际部署时,可通过启动参数覆盖 spring.profiles.active 的值,无需修改 application.yml:
测试环境启动(命令行):
java -jar your-project.jar --spring.profiles.active=test
生产环境启动(命令行):
java -jar your-project.jar --spring.profiles.active=prod
IDE 中配置(以 IntelliJ IDEA 为例):
在启动配置的 Program arguments 中添加:
--spring.profiles.active=test # 或 prod
总结
application.yml:指定激活的环境,存放公共配置;application-test.yml:测试环境专属配置;application-prod.yml:生产环境专属配置;- 通过
spring.profiles.active动态切换,实现环境隔离,避免频繁修改配置文件。
这种方式符合 Spring Boot 最佳实践,便于开发、测试和生产环境的配置管理。
更多推荐

所有评论(0)