正如我所看到的,已经有很多关于Spring的属性的问题,但我想要实现的是有点不寻常。
假设我在类路径上有cp.prop.file.properties
external.prop.file.path=file:./path/to/external.prop.file.properties
现在,如果在我的春天上下文中,我将宣布类似这样的内容
<context:property-placeholder location="classpath:cp.prop.file.properties" />
<context:property-placeholder location="${external.prop.file.path}" />
我认为它无法正常工作。我目前无法检查。
我相信我对我想要实现的目标的意图是相当清楚的。一般来说,我希望有一些属于构建依赖的属性,并且不可配置,有些属性可配置且外部化。并且在构建期间定义了后者的路径。
答案 0 :(得分:1)
您可以使用以下语法
加载多个属性文件 <context:property-placeholder
location="classpath:a.properties, file:/path/to/myConfigFile.properties"
ignore-unresolvable="true"/>
答案 1 :(得分:0)
从以下解决方案中使用
<context:property-placeholder
location="classpath:core-application.properties,
classpath:core-services.properties,
classpath:core-messages.properties"
ignore-unresolvable="true"/>
或
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:core-application.properties</value>
<value>classpath:core-services.properties</value>
<value>classpath:core-messages.properties</value>
</list>
</property>
<property name="ignoreUnresolvablePlaceholders" value="true"/>
</bean>
答案 2 :(得分:0)
我们可以使用以下XML配置来定义多个属性文件:
<context:property-placeholder location="classpath:foo.properties, ${external.prop.file.path}"/>
如果我们使用JavaConfig,那么wen可以使用它(Java 8及更高版本):
@PropertySource("classpath:foo.properties")
@PropertySource("${external.prop.file.path}")
public class PropertiesWithJavaConfig {
//...
}
或者这个(Java 8之前的版本):
@PropertySources({
@PropertySource("classpath:foo.properties"),
@PropertySource("${external.prop.file.path}")
})
public class PropertiesWithJavaConfig {
//...
}
顺便说一句,如果属性名称发生冲突,则最后读取的源优先。