我在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
我希望我能很好地解释这个问题。请帮忙!
提前致谢!!!
答案 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)。