【问题标题】:Spring: Configure PropertyPlaceHolder when Property File outside Jar FileSpring:在Jar文件外的Property File中配置Property PlaceHolder
【发布时间】:2017-08-03 03:02:26
【问题描述】:

我有一个基于 SPRING 2.5.6 的项目,我的属性文件位于可执行 Jar 文件之外,例如

./ |---MyApplication.Jar |---MyApplication.properties

我不知道如何配置 PropertyPlaceholderConfigurer 以便它可以选择 JAR 文件中的文件或任何其他方式使 spring 可以知道属性文件的位置。换句话说,如何将 Jar 根路径放在类路径中,因为 spring 可以自动从类路径中选择属性文件。

我已阅读以下问题,但并未准确说明如何配置 PropertyPlaceholderConfigurer。

Read properties file outside JAR file

Add properties file to build path of runnable jar

java -jar -cp 。 ./main.jar 我知道这种将根路径添加到类路径中的方式,但我的客户不想通过命令行或批处理文件运行 jar。那么有没有办法以某种方式配置 Spring?

我认为可能的解决方案是将 JAVA 基础配置与 xml 基础配置一起制作。

【问题讨论】:

  • 春季 2.5.6?怎么回事?你知道他们即将发布 Spring 5.0 吗???
  • @Sean Patrick Floyd 是的,我知道这一点,它是 2005 年或 2006 年制作的过时应用程序。升级到最新版本会导致灾难性失败,因为在这种情况下,许多其他依赖组件将需要更改和这是巨大的努力。所以我们正在承受这个。 :-)

标签: java spring maven executable-jar properties-file


【解决方案1】:
java -jar -cp . ./main.jar

更改运行命令。

【讨论】:

  • 先生,我已经知道这个方法,我也参考了其他建议相同方法的问题,但我必须双击运行 jar,我不能指示我的客户通过命令行运行 jar .所以我需要一个不需要命令行的解决方案。
  • 正如我所说,我的属性文件不在类路径中。它在类路径之外。
  • 使用操作系统类路径。或者,您也可以使用操作系统环境变量。
  • 你能解释一下什么是操作系统类路径吗?如果您引用环境变量而不是有问题,我有很多客户会使用我的jar,我该如何放置每个客户的环境变量,我认为这在部署阶段不是一个非常可行的解决方案。跨度>
【解决方案2】:

解决方法——获取jar所在目录,可以使用spel。 以下内容应能助您一臂之力。

  <context:property-placeholder location="file:///#{T(java.lang.Object. getClass().getProtectionDomain().getCodeSource().getLocation‌​())}/ application.properties"/>

【讨论】:

  • 外部项目的包装是什么?我不认为您的解决方案可以正常工作,正如我所说的属性文件在资源文件夹之外,我必须提供属性文件以及 jar 文件,以便我的客户端可以配置应用程序并在配置后重新启动应用程序。
  • 这可以用来配置spring读取外部属性文件。
  • 如何给 ${ext.prop.dir} 路径?您能否根据此测试后更新您的答案,如果有效,我会接受。
  • 问题是 ${ext.prop.dir} 必须是动态的并且必须是 JAR 文件的根路径。我不知道它放在客户端系统上的目录是什么。如何在另一个属性文件中给出这个路径。我的意思是可执行jar的根路径。
  • 这提供了 jar 的路径,在您提供属性文件路径的 jar 中,将下面提到的行放在那里,后跟属性文件的名称 - getClass().getProtectionDomain().getCodeSource ().getLocation()
【解决方案3】:

你可以使用Maven或者Gradle来管理你的项目,他可以帮你自动添加依赖,你不需要手动导入Jar包。

【讨论】:

  • 请阅读问题。我对 maven 依赖没有问题。
猜你喜欢
  • 2011-02-22
  • 2017-05-03
  • 1970-01-01
  • 2014-02-12
  • 1970-01-01
  • 2013-02-07
  • 2018-11-11
  • 1970-01-01
  • 2016-03-17
相关资源
最近更新 更多