0

小问题。我们使用 Spring 3.1,并且似乎在值分隔符(即默认值)方面存在问题。

<context:property-placeholder ignore-resource-not-found="false" ignore-unresolvable="false" location="${app-conf-base-path:classpath:}environment/app-conf-${spring.profiles.active:test}.properties" />

我们根据 Maven 环境配置文件过滤正在部署的属性。如果没有提供 maven 环境配置文件,所有环境属性文件都将加载到 war 中并放在类路径中。实际环境特定设置在运行时使用弹簧配置文件加载。给我们带来问题的部分是 ${app-conf-base-path:classpath:} 因为他似乎无法解决这个问题。我相信这是因为占位符是使用最后一次出现的默认值分隔符拆分的。为什么我们想要这个是因为我们希望他查看 app-conf-base-path,除非它没有被定义为 JVM 参数。在这种情况下,他应该查看类路径。

我试过了:

  • 带有值分隔符 == '?' 的占位符配置器 无济于事。

有人知道替代方案吗?

4

1 回答 1

0

我通过确保在加载它的类加载器时将外部配置文件添加到服务器的类路径来解决这个问题。这样我就不需要占位符来指向 file:// 类型的位置。我在 tomcat 的 setclasspath.sh 中添加了一条导出行,用于将外部文件添加到环境变量 CLASSPATH 中。

于 2012-11-14T21:24:52.627 回答