Spring 属性占位符默认值分隔符

Spring 属性占位符默认值分隔符,spring,configuration,properties,placeholder,Spring,Configuration,Properties,Placeholder,小问题。 我们使用Spring3.1,并且似乎在值分隔符(默认值)方面存在问题 我们根据maven环境概要文件过滤正在部署的属性。如果没有提供maven环境概要文件,则所有环境属性文件都将加载到war中并放在类路径上。 实际的特定于环境的设置是在运行时使用spring概要文件加载的。但是给我们带来问题的部分是${app conf base path:classpath:},因为他似乎无法解决这个问题。我认为这是因为占位符是使用默认值分隔符的最后一次出现来分割的。 我们之所以希望这样做,是因为

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


我们根据maven环境概要文件过滤正在部署的属性。如果没有提供maven环境概要文件,则所有环境属性文件都将加载到war中并放在类路径上。 实际的特定于环境的设置是在运行时使用spring概要文件加载的。但是给我们带来问题的部分是${app conf base path:classpath:},因为他似乎无法解决这个问题。我认为这是因为占位符是使用默认值分隔符的最后一次出现来分割的。 我们之所以希望这样做,是因为我们希望他查看app conf基本路径,除非这不是定义为JVM参数。在这种情况下,他应该查看类路径

我试过:

  • 占位符配置器的值分隔符==“?”无效

有人想到了替代方案吗?

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

<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" />