SpringBoot多环境配置dev与prod
SpringBoot Profile 实现多环境配置管理。
Profile文件命名
YAML
application.yml # 公共配置
application-dev.yml # 开发环境
application-test.yml # 测试环境
application-prod.yml # 生产环境
配置示例
公共配置
YAML
# application.yml
spring:
application:
name: my-app
profiles:
active: dev # 激活dev环境
server:
port: 8080
开发环境配置
YAML
# application-dev.yml
spring:
datasource:
url: jdbc:mysql://localhost:3306/dev_db
username: dev
password: dev123
logging:
level:
root: debug
生产环境配置
YAML
# application-prod.yml
spring:
datasource:
url: jdbc:mysql://prod-server:3306/prod_db
username: prod
password: ${DB_PASSWORD}
server:
port: 80
logging:
level:
root: warn
file:
name: /var/logs/app.log
激活Profile方式
配置文件激活
Bash
spring:
profiles:
active: prod
命令行激活
Bash
java -jar app.jar --spring.profiles.active=prod
环境变量激活
Bash
export SPRING_PROFILES_ACTIVE=prod
java -jar app.jar
IDEA运行激活
Run Configuration → Active profiles: prod
Profile优先级
Java
application-{profile}.yml > application.yml
特定环境配置覆盖公共配置。
多Profile激活
Java
# 同时激活多个Profile
java -jar app.jar --spring.profiles.active=dev,mysql
条件化Bean
YAML
@Configuration
@Profile("dev")
public class DevConfig {
@Bean
public DataSource devDataSource() {
return new EmbeddedDataSource();
}
}
@Configuration
@Profile("prod")
public class ProdConfig {
@Bean
public DataSource prodDataSource() {
return new MySQLDataSource();
}
}
方法级Profile
Bash
@Service
public class CacheService {
@Profile("dev")
@Bean
public CacheManager devCache() {
return new SimpleCacheManager();
}
@Profile("prod")
@Bean
public CacheManager prodCache() {
return new RedisCacheManager();
}
}
环境变量注入
YAML
# application-prod.yml
spring:
datasource:
password: ${DB_PASSWORD} # 从环境变量读取
text
export DB_PASSWORD=secret123
java -jar app.jar --spring.profiles.active=prod
Profile默认值
text
spring:
profiles:
active: dev # 默认激活dev
default: dev # 未指定时的默认
要点总结
- application-{profile}.yml命名规则
- spring.profiles.active激活指定环境
- 命令行参数可覆盖配置文件
- @Profile注解条件化Bean加载
- 生产环境敏感配置使用环境变量
📝 发现内容有误?点击此处直接编辑