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

标签 java spring 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,因此不知何故没有考虑生产属性文件的附加位置。我错过了什么吗?

spring boot 1.1.0.BUILD-SNAPSHOT

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

最佳答案

我知道你问过如何做到这一点,但答案是你不应该这样做。

相反,有一个 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

关于java - 如何在 Spring-Boot 的生产过程中覆盖 application.properties?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23563363/

相关文章:

java - ServletContext.getResource 从 lib 中获取资源

java - Eclipse 安装失败并出现错误

java - java中的这些注释会抛出什么异常?

java - Spring bean 创建但未 Autowiring

spring - 使用 Spring Integration DSL 进行中流文件采购

java - 通过 SSE 订阅的 Flux 引发 cancel() 事件

java - 获取 java.io.FileNotFoundException : FileName (No such file or directory)

java - 触发 Spring 集成

java - 使用PropertySourcesPlaceholderConfigurer?

java - 在 Swagger 中为请求参数提供示例值