如何在 Spring 的 Tomcat Web 服务器中外部化 application.properties?

新手上路,请多包涵

SpringApplication 将从以下位置的 application.properties 文件加载属性并将它们添加到 Spring 环境:

 - A /config subdirectory of the current directory.
- The current directory
- A classpath /config package
- The classpath root

该列表按优先级排序(在列表较高位置定义的属性会覆盖较低位置定义的属性)。

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-application-property-files

问题:当在 tomcat 服务器上运行 war 文件时:如何为 application.properties 在容器 之外,比如 d:\application.properties tomcat ---

自定义位置应获得关于上述位置的最高优先级。

问题是:我当然可以在 tomcat 中的爆炸战争中添加一个 /config 文件夹 webapps 文件夹,但是如果 webapps 文件夹被清理和战争,我将丢失任何自定义配置被重新部署。

因此我想在外面添加一个额外的位置。

原文由 membersound 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 887
1 个回答

对我来说,最简单的方法是在 Tomcat 的配置文件夹中放置一个上下文文件。例如,如果您的应用程序在根路径下运行(例如 http://your_domain.com/ ),您需要创建一个文件 [path_to_your_tomcat]/conf/Catalina/localhost/ROOT.xml 。如果您的应用程序在不同的路径中运行,例如 http://your_domain.com/example_path 文件应该这样命名 [path_to_your_tomcat]/conf/Catalina/localhost/example_path.xml 。在此文件中,您可以指定外部 application.properties 文件的路径,该文件可以放置在硬盘驱动器的任何位置。

 <?xml version="1.0" encoding="UTF-8"?>
<Context>
    <Environment name="spring.config.location" value="file:/path/to/your/application/properties/file/" type="java.lang.String"/>
</Context>

原文由 Grzegorz B. 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题