java - 如何将外部属性文件位置添加到部署到 tomcat 6 的 Spring Boot 应用程序?

标签 java spring-boot properties tomcat6

我有一个使用注释配置的 Spring Boot 应用程序。我有 application.properties 和 application-{profile}.properties 文件,其中已经包含数据。问题是我现在想在 Tomcat 6 服务器上定义一个 WAR 外部位置,我可以在其中放置优先的配置文件。也就是说,我在这些属性文件中放入的任何设置都应胜过 application.properties 或 application-{profile}.properties 中的任何值。

我怎样才能以最简单的方式实现这一目标?

我已经尝试添加@PropertySources,但它在属性文件顺序中的优先级较低,因此这不是可能的解决方案。我可以轻松更改属性文件加载顺序吗?

无法将环境变量添加到服务器,因为这可能会影响其他已部署的应用程序。 WAR 必须是独立的并提供它需要的一切(除了这个外部属性覆盖文件)。

最佳答案

您可以配置spring.config.location as described in the doc或者,如果您希望它无论如何都适用,您可以实现一个EnvironmentPostProcessor

这个university session at Devoxx中有一个样本哪里we showcase how to read a file from the home directory并将其添加到命令行属性之后。您可以做几乎相同的事情并按照您想要的方式订购它们。

示例应用程序是 available here如果你想尝试一下。

关于java - 如何将外部属性文件位置添加到部署到 tomcat 6 的 Spring Boot 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40573125/

相关文章:

java - 是否需要 Class.forName() 机制?

java - 验证 Thymeleaf 中的输入

java - 使用 JNA 从 Java 调用 DLL

java - 克隆一维数组和二维数组时发生什么不同

java - Spring Boot @Controller 拒绝与 @Autowired 一起工作

c# - 可视化 WPF 控件中的对象属性

javascript - 在一个对象中获取 2 个属性时遇到问题

java - 如何使用 ResoucesBundles 在属性文件中存储与可用性相关的值(字体、尺寸、颜色...)

java - 频率分析算法

spring - 在 Spring Boot 应用程序中运行 JUnit 单元测试而不提供数据源