【发布时间】:2017-10-23 22:56:50
【问题描述】:
我正在构建多个 Spring Boot 应用程序,它们将部署在同一个 servlet 容器上。但是我很难让 Spring Boot 以我想要的方式处理外部化配置文件,而不是像框架想要的那样。
情况:
- 多个 Spring Boot 应用程序将部署在单个 servlet 容器(WAR 文件)上
- 配置文件的位置将通过JVM属性
spring.config.location设置 - 嵌入式部署不是一种选择
问题:
由于应用程序部署在同一个 JVM 上,属性 spring.config.location 对于所有应用程序具有相同的值。我希望我们的应用程序都使用相同的配置文件命名 (application.properties),因此指定 spring.config.name 不是一个选项。
我想要什么:
- 无需设置
spring.config.name,因为配置名称应在我们所有应用程序中标准化(常量) - 外部化配置属性应覆盖我部署的 WAR 中打包的 application.properties 中的值
- 配置文件特定配置(应用程序-{profile})应该是可能的
- 代码中没有硬编码的配置位置
-
在每个应用程序目录布局中组织配置文件:
${spring.config.location}/app1/application.properties ${spring.config.location}/app2/application.properties ${spring.config.location}/app3/application.properties
问题:
是否有某种机制可以影响或覆盖外部配置文件的加载或解析?
还有其他方法可以得到想要的结果吗?
【问题讨论】:
标签: java spring-boot configuration war