一文带你实现SpringBoot多配置文件实现环境动态切换(prod、dev、test)
在Spring Boot中,可以使用@Profile
注解和application.properties
或application.yml
配置文件来实现多环境的配置管理。
以下是一个使用@Profile
注解和application-{profile}.properties
文件来实现多环境配置的示例:
- 在
application.properties
中设置默认配置,并使用占位符引入环境特定的配置:
# application.properties
app.message=Default Message
- 创建环境特定的配置文件,如
application-prod.properties
、application-dev.properties
和application-test.properties
:
# application-prod.properties
app.message=Production Message
# application-dev.properties
app.message=Development Message
# application-test.properties
app.message=Testing Message
- 在Spring Boot应用中使用
@Profile
注解来根据激活的配置文件切换不同的配置:
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.context.annotation.PropertySource;
import org.springframework.beans.factory.annotation.Value;
@Configuration
@Profile("!production & !development & !testing")
@PropertySource("classpath:application.properties")
public class DefaultConfig {
@Value("${app.message}")
private String message;
public String getMessage() {
return message;
}
}
@Configuration
@Profile("production")
@PropertySource("classpath:application-prod.properties")
public class ProductionConfig {
// ...
}
@Configuration
@Profile("development")
@PropertySource("classpath:application-dev.properties")
public class DevelopmentConfig {
// ...
}
@Configuration
@Profile("testing")
@PropertySource("classpath:application-test.properties")
public class TestConfig {
// ...
}
- 运行应用时,可以通过设置
spring.profiles.active
属性来指定使用哪个配置文件。例如,在application.properties
或通过命令行参数设置:
spring.profiles.active=prod
或者在运行应用时指定:
java -jar yourapp.jar --spring.profiles.active=prod
这样,你就可以根据需要在不同的环境下切换配置,而不需要重新编译应用。
评论已关闭