我想导入所有属性文件,以.properties
结尾,这些文件包含在我项目的 ALL jar-dependencies的src/main/resource
位置。
我编写了一个JUnit测试,其中我的context.xml位于src / test / resources文件夹中。我使用通配符指定了property-placeholder,但它不起作用。
<context:property-placeholder location="classpath*:*.properties"/>
可能我是傻瓜,但我无法在网上找到解决问题的方法。这里有谁知道什么是正确的语法?
修改
根项目,具有maven依赖项,从我的工作区解析:
我想导入依赖项目的module.properties文件:
答案 0 :(得分:8)
从春天documentation:
“classpath *:”前缀也可以与位置路径的其余部分中的PathMatcher模式组合,例如“classpath *:META-INF / * - beans.xml”。 [...]
但是有一个限制:
请注意,“类路径*:”与Ant样式模式结合使用时,只能在模式启动前与至少一个根目录可靠地工作,除非实际目标文件驻留在文件系统中。这意味着像“classpath *:*。xml”这样的模式不会从jar文件的根目录中检索文件,而只能从扩展目录的根目录中检索文件。 [...]
因此,如果我将模块的属性文件放在src / main / resources / META-INF中,我可以按如下方式加载它们:
<context:property-placeholder location="classpath*:/META-INF/*.properties" />
答案 1 :(得分:4)
你也可以这样做:
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath*:your.properties</value>
<value>classpath*:your.properties</value>
.....
</list>
</property>
<property name="ignoreUnresolvablePlaceholders" value="true"/>
</bean>
更复杂的例子:
<bean id="propertyPlaceholderConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="ignoreResourceNotFound" value="true" />
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
<property name="locations">
<list>
<value>classpath*:properties/defaults.properties</value>
<value>classpath*:properties/${props.env.name}.properties</value>
<value>classpath*:com/calciuum/config/defaults.properties</value>
<value>classpath*:com/calciuum/config/${props.env.name}.properties</value>
<value>classpath*:${props.env.classpath}/defaults.properties</value>
<value>classpath*:${props.env.classpath}/${props.env.name}.properties</value>
<value>file:${props.env.ext.properties}</value>
</list>
</property>
</bean>
答案 2 :(得分:1)
如果您使用的属性小于4.您可以使用:
<context:property-placeholder location="classpath:test1.properties,classpath:test2.properties" />
否则请使用此
<context:property-placeholder location="classpath:*.properties" />