无法在spring-context.xml中加载属性文件。属性文件路径在dev.properties

时间:2016-09-16 07:21:16

标签: spring properties property-placeholder

  

我在spring-context.xml中加载属性文件,我正在给   外部属性文件位置    $ {spring.profiles.active} .properties ,它位于类路径中,并在 spring-context.xml 中将该位置用作placholder。我的 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

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

提前致谢!!!

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

注意::如果你的任何bean初始化依赖于在步骤4中读取的键值,请手动执行初始化或创建在任何其他类之前加载的***自定义类(servlet)(即使是春天&#39; s DispactherServlet)。