2016-09-16 61 views
1

我加载在弹簧的context.xml属性文件,我在 $给 外部属性文件位置的占位符{} spring.profiles.active的.properties这是在类路径中,并使用该位置作为placholder在spring-context.xml。我弹簧的context.xml是:无法在spring-context.xml中加载属性文件。属性文件的路径给出的dev.properties

<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

我希望我解释得很好。请帮忙!

在此先感谢!

回答

0

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

+0

嗨@ЮрийПлевако我需要的ArrayList豆的reference.I修改我的问题,并张贴了我完整的弹簧context.xml中。 – Rosh

+0

所以当你创建你的ArrayList bean时,你需要实例化PropertyPlaceHolderConfigurer,因为你在你的ArrayList bean配置中使用了占位符,而你没有它。可能的方法是在处理资源时通过构建系统解析一些占位符 –

+0

是的。我知道但我无法找到实现它的方法。如果你能提出建议,这将会有所帮助。谢谢 – Rosh

0

看来你使用Spring配置文件,而不是与初始化时间属性值绑定搞乱你可以做什么...... 1)读取属性文件(配置文件)的 /WEB-INF /属性/ $ {春.profiles.active} .properties 2)创建一个可读取这些属性值的java类。 (不要忘了使用弹簧的配置文件的接口类) 3)当你试图读取其位置嵌入特性文件的属性文件(步骤1),在创建的对象步骤-1将给予重点<value>${app.config.batch.location}</value> 值现在您可以使用可用的文件读取器类加载此属性文件。 4)创建Properties对象并访问其中的值。注意::如果你的bean的任何初始化都依赖于在第4步读取的键值,那么手动执行初始化或创建在任何其他类(甚至是Spring的DispactherServlet)之前加载的***自定义类(servlet) 。