一尘不染

如何在Spring-Boot的生产过程中覆盖application.properties?

spring-boot

我正在使用Spring Boot,并application.properties在开发过程中选择了一个数据库@Configuration @Profile("dev")

spring.profiles.active=dev
spring.config.location=file:d:/application.properties

在生产期间,我想在应用程序上下文之外创建一个文件,该文件应该被加载,然后使用d:/application.properties激活不同的配置文件:

spring.profiles.active=production

结果:启动应用程序时,配置仍然是dev,因此不考虑生产属性文件的其他位置。我有什么想念的吗?

弹簧靴1.1.0.BUILD-SNAPSHOT

注意:这个问题 不是 关于 tomcat的


阅读 461

收藏
2020-05-30

共1个答案

一尘不染

我知道您问过如何做,但是答案是您不应该这样做。

取而代之的是,有一个application.propertiesapplication-default.properties
application- dev.properties等,并且经由ARGS切换配置文件到JVM:例如-Dspring.profiles.active=dev

您还可以在测试时使用 @TestPropertySource

理想情况下,所有内容都应在源代码控制中,这样就不会让人感到意外,例如,您如何知道服务器位置的哪些属性以及丢失的属性?如果开发人员介绍新事物,会发生什么?

Spring Boot已经为您提供了足够的方法来完成此操作。

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-
external-config.html

2020-05-30