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