Java 如何在SpringXML文件中使用多属性占位符

Java 如何在SpringXML文件中使用多属性占位符,java,spring,Java,Spring,我有一个关于Spring如何处理多属性占位符的问题 我有这段代码: 属性myapp.system.property是已定义的系统属性 例如,如果将其定义为“devsystem”,则会导入devsystem.properties中定义的所有属性,并可在下面的代码中使用 现在我想要另一个属性文件,其名称由devsystem.property文件中的属性定义: myapp.environment是在devsystem.properties文件中定义的属性 这停止了工作。Spring无法解析${

我有一个关于Spring如何处理多属性占位符的问题

我有这段代码:


属性myapp.system.property是已定义的系统属性

例如,如果将其定义为“devsystem”,则会导入devsystem.properties中定义的所有属性,并可在下面的代码中使用

现在我想要另一个属性文件,其名称由devsystem.property文件中的属性定义:


myapp.environment是在devsystem.properties文件中定义的属性

这停止了工作。Spring无法解析${myapp.environment},并抱怨找不到文件dir2/myapp-${myapp.environment}.properties

有人能让我知道我做错了什么,我怎样才能让它起作用


非常感谢。

你可以这样做

<context:property-placeholder location="classpath:file1.properties,classpath*:project-common.properties,classpath*:project-${spring.profiles.active}.properties"/>

在我的例子中,它是一个遗留系统,因此属性文件没有一些标准名称,但可以肯定的是,您可以使用通配符引用属性文件

<context:property-placeholder location="classpath:*.properties"/>

您可以使用

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location">
        <value>classpath:file1.properties</value>
        <value>classpath:file2.properties</value>
    </property>
</bean>

类路径:file1.properties
类路径:file2.properties
或(逗号分隔)


仅仅晚了4年,但我在Spring4中找到了一种方法(我正在使用4.2.2)

诀窍是使用util:properties包装2个属性文件,并使用以下命令访问第一个文件中包含的值:


使用您有权访问创建的bean的属性

ignore Unsolvable是访问两个属性占位符而不出错的方法


希望从现在起它能帮助其他人。

您不能在该位置仅查阅系统属性/环境属性占位符不会替换不同位置的占位符。我建议您不要使用自己的属性来使用spring概要文件,也不要编写
ApplicationContextInitializer
来加载不同的属性文件。
<context:property-placeholder location="classpath:file1.properties,classpath:file2.properties"/>
<util:properties 
      id="specific" 
      location="classpath:dir1/#{systemProperties['myapp.system.property']}.properties"/>
<util:properties 
      id="devProperties" 
      location="classpath:dir2/myapp-#{specific['myapp.environment']}.properties"/>
<context:property-placeholder properties-ref="specific" order="1" ignore-unresolvable="true" />
<context:property-placeholder properties-ref="devProperties" order="2" ignore-unresolvable="true" />