在 Spring Boot 项目中,切换测试、开发、线上环境通常通过配置文件(
application.properties
或application.yml
)和不同的 Profile 来实现。以下是如何配置和切换这些环境的步骤:
一、创建不同的配置文件
Spring Boot 允许你为不同的环境创建不同的配置文件。这些文件的命名规则是
application-{profile}.properties
或 application-{profile}.yml
,其中 {profile}
是环境的名称。
例如,在 resources 目录下创建以下文件:
-
application-dev.yml
- 开发环境配置 -
application-test.yml
- 测试环境配置 -
application-prod.yml
- 线上环境配置
二、 配置各个环境的属性
在每个配置文件中,你可以定义特定于该环境的属性。例如:
application-dev.yml:
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost:3306/dev_db
username: dev_user
password: dev_password
application-test.yml:
server:
port: 8081
spring:
datasource:
url: jdbc:mysql://localhost:3306/test_db
username: test_user
password: test_password
application-prod.yml:
server:
port: 8082
spring:
datasource:
url: jdbc:mysql://localhost:3306/prod_db
username: prod_user
password: prod_password
三、设置默认配置文件
在 application.yml
中,你可以设置默认的 Profile:
spring:
profiles:
active: dev
四、激活特定的 Profile
你可以通过多种方式激活特定的 Profile:
1. 通过命令行参数
运行 JAR 文件时,可以通过命令行参数指定 Profile:
java -jar your-app.jar --spring.profiles.active=prod
2. 通过环境变量
你可以设置 SPRING_PROFILES_ACTIVE
环境变量来指定 Profile:
export SPRING_PROFILES_ACTIVE=prod
3. 通过 IDE 配置
在 IntelliJ IDEA 中,你可以在运行配置中设置 spring.profiles.active
参数。
五、使用 Profile 特定的 Bean
你还可以在代码中根据不同的 Profile 创建特定的 Bean:
@Configuration
public class DataSourceConfig {
@Bean(name = "dataSource")
@Profile("dev")
public DataSource devDataSource() {
// 返回开发环境的数据源
}
@Bean(name = "dataSource")
@Profile("test")
public DataSource testDataSource() {
// 返回测试环境的数据源
}
@Bean(name = "dataSource")
@Profile("prod")
public DataSource prodDataSource() {
// 返回线上环境的数据源
}
}
六、测试不同环境
在启动应用时,确保选择的 Profile 和配置文件中定义的属性是否正确应用,可以通过查看日志或访问应用程序来验证配置是否正确加载。