date: 2025-03-18 21:06:28 title: Spring Boot多配置文件 author: zaqai tags:
- Java
- SpringBoot
四种环境简介
在Spring Boot项目中,通常通过不同的环境配置(dev、test、pre、prod)来区分开发、测试、预发布和生产阶段的需求。 各环境的核心区别总结
环境 | 目标用户 | 配置特点 | 典型用途 |
---|---|---|---|
dev | 开发人员 | 灵活、调试友好 | 本地开发、快速迭代 |
test | 测试人员 | 模拟生产、数据隔离 | 功能验证、自动化测试 |
pre | 部分用户/流量 | 与生产一致、小范围发布 | 上线前最终验证、性能测试 |
prod | 全体用户 | 高稳定、安全、优化 | 正式服务、高并发处理 |
激活环境的方式(按优先级排序)
激活环境也是就近原则, 如命令行运行时指定参数激活环境>环境变量>配置文件(细粒度配置文件优先级大于通用配置文件)
命令行参数(JVM参数)
java -jar app.jar --spring.profiles.active=prod # 命令行参数
java -Dspring.profiles.active=test -jar app.jar # JVM参数
环境变量
export SPRING_PROFILES_ACTIVE=dev # Linux/Mac
set SPRING_PROFILES_ACTIVE=dev # Windows
可以在 Kubernetes 的 Deployment YAML 中定义环境变量
env:
- name: SPRING_PROFILES_ACTIVE
value: "prod"
配置文件指定(application.yml/properties)
# application.properties
spring.profiles.active=dev
# application.yml
spring:
profiles:
active: test
多 Profile 文档块模式
# application.yml
spring:
profiles:
active: prod # 指定默认激活的 Profile
---
# 开发环境配置
spring:
config:
activate:
on-profile: dev
server:
port: 8081
---
# 生产环境配置
spring:
config:
activate:
on-profile: prod
server:
port: 8083
pom文件配置环境
<profiles>
<!-- 本地开发 -->
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
<!-- 默认使用dev -->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!-- 测试 -->
<profile>
<id>test</id>
<properties>
<env>test</env>
</properties>
</profile>
<!-- 预发 -->
<profile>
<id>pre</id>
<properties>
<env>pre</env>
</properties>
</profile>
<!-- 生产 -->
<profile>
<id>prod</id>
<properties>
<env>prod</env>
</properties>
</profile>
</profiles>
细粒度配置文件
细粒度配置文件优先级大于通用配置文件, 也就是会覆盖通用配置文件的内容
spring:
# Spring Boot 2.4为了提升对Kubernetes的支持 将 spring.profiles 作废了
# profiles:
# active: dal,web,config,image
# 替换上面作废的spring.profiels.actice配置参数
config:
import: application-dal.yml,application-web.yml,application-config.yml,application-image.yml,application-email.yml,application-rabbitmq.yml,application-ai.yml,application-pay.yml
回复