1

我在 spring-context.xml 中加载属性文件,我在 ${spring.profiles.active}.properties中提供外部属性文件位置,它位于类路径中,并将该位置用作spring-context.xml中的占位符。我的spring-context.xml是:

    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="ignoreResourceNotFound" value="true" />
    <property name="ignoreUnresolvablePlaceholders" value="true" />
    <property name="searchSystemEnvironment" value="true" />
    <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
    <property name="locations" ref="propertyConfigurerFiles" />
    </bean>
    <bean id="propertyConfigurerFiles" class="java.util.ArrayList">
    <constructor-arg>
    <list>
    <value>/WEB-INF/properties/common.properties</value>

    <!--In Developemnet Enviroenment it will be dev.properties-->
    <value>/WEB-INF/properties/${spring.profiles.active}.properties</value> 

    <!--External Property File Location as a Placeholder-->
    <value>${app.config.batch.location}</value>

    </list>
    </constructor-arg>
    </bean>

我的 dev.properties 是:

    app.config.batch.location=E:/project/properties/config.properties

我的问题是${app.config.batch.location}占位符在 spring-context.xml 中没有解决,它试图加载文件 ${app.config.batch.location}代替 E:/project/properties /config.properties

我希望我能很好地解释这个问题。请帮忙!

提前致谢!!!

4

2 回答 2

0

您需要创建类 PropertyPlaceHolderConfigurer 的 bean。不仅仅是一些 ArrayList bean。为什么你认为你需要这个 ArrayList bean?

于 2016-09-16T07:44:08.170 回答
0

看来您正在使用弹簧配置文件,而不是弄乱初始化时间属性值绑定,您可以做的是...... 1)读取属性文件(配置文件)/WEB-INF/properties/${spring.profiles.active}。属性 2) 创建一个可以读取这些属性值的 java 类。(不要忘记使用弹簧配置文件接口类)3)当您尝试读取其位置嵌入在属性文件中的属性文件时(步骤 1),在步骤 2 中创建的对象将为键提供值,<value>${app.config.batch.location}</value> 现在您可以使用可用的文件阅读器类加载此属性文件。4)创建Properties对象并访问其中的值。

注意::如果您的任何 bean 初始化依赖于在第 4 步读取的键值,请手动进行初始化或创建在任何其他类(甚至是 spring 的 DispactherServlet)之前加载的 ***自定义类(servlet)。

于 2016-09-16T10:38:11.100 回答