Spring Boot多环境配置:一次编译适配本地与生产环境运行
Spring Boot多环境Profile配置实现方案
1. 创建多环境配置文件
在src/main/resources目录下创建分层配置文件:
- 主配置文件:
application.yml(或.properties),存放所有环境共享的基础配置(如服务器端口、Spring通用设置)server: port: 8080 # 可设置默认激活环境,也可留空由启动时指定 spring: profiles: active: dev - 开发环境配置:
application-dev.yml,存放开发专属配置(如本地MySQL密码、调试级日志)spring: datasource: url: jdbc:mysql://localhost:3306/dev_db username: root password: dev123 logging: level: com.yourpackage: DEBUG - 生产环境配置:
application-prod.yml,存放生产专属配置(如生产数据库地址、加密密码、生产级日志)spring: datasource: url: jdbc:mysql://prod-db:3306/prod_db username: prod_user password: prod@456 logging: level: com.yourpackage: INFO file: name: /var/log/your-app.log
2. 通用打包(不绑定特定环境)
执行打包命令时无需指定环境,确保生成的Jar包包含所有环境配置:
- Maven:
mvn clean package - Gradle:
./gradlew clean build
3. 启动时指定目标环境
命令行启动
直接通过参数指定要激活的Profile:
# 启动开发环境 java -jar your-app.jar --spring.profiles.active=dev # 启动生产环境 java -jar your-app.jar --spring.profiles.active=prod
IDE本地启动
在IDE运行配置中添加VM参数:
-Dspring.profiles.active=dev
环境变量方式
适用于生产服务器部署,通过系统环境变量指定:
# Linux/macOS export SPRING_PROFILES_ACTIVE=prod java -jar your-app.jar # Windows set SPRING_PROFILES_ACTIVE=prod java -jar your-app.jar
进阶技巧
- 多Profile组合:可同时激活多个Profile,比如拆分业务配置和安全配置:
java -jar your-app.jar --spring.profiles.active=prod,secure - 代码层面区分环境:用
@Profile注解为不同环境注入差异化Bean:@Configuration @Profile("dev") public class DevCacheConfig { @Bean public CacheManager devCacheManager() { return new ConcurrentMapCacheManager(); } } @Configuration @Profile("prod") public class ProdCacheConfig { @Bean public CacheManager prodCacheManager() { return new RedisCacheManager(redisConnectionFactory()); } }
内容的提问来源于stack exchange,提问作者Vito Lipari
相关产品推荐
相关产品推荐

