无法在spring-context.xml中加载属性文件。属性文件路径在dev.properties中作为占位符提供
我正在spring-context.xml中加载属性文件,并给出 中的外部属性文件位置 ${spring.profiles.active}.properties位于类路径中,并将该位置用作spring context.xml中的Placeholder。我的spring context.xml是: 我的问题是,${app.config.batch.location}占位符不可用 在spring-context.xml中解析并尝试加载文件 ${app.config.batch.location}代替 E:/project/properties/config.properties 我希望我能很好地解释这个问题。请帮忙无法在spring-context.xml中加载属性文件。属性文件路径在dev.properties中作为占位符提供,spring,properties,property-placeholder,Spring,Properties,Property Placeholder,我正在spring-context.xml中加载属性文件,并给出 中的外部属性文件位置 ${spring.profiles.active}.properties位于类路径中,并将该位置用作spring context.xml中的Placeholder。我的spring context.xml是: 我的问题是,${app.config.batch.location}占位符不可用 在spring-context.xml中解析并尝试加载文件 ${app.config.batch.location}代替
提前感谢 您需要创建PropertyPlaceHolderConfigure类的bean。
不仅仅是一些ArrayList bean。为什么您认为需要这个ArrayList bean?您需要创建PropertyPlaceHolderConfigure类的bean。
不仅仅是一些ArrayList bean。为什么您认为您需要这个ArrayList bean?您似乎在使用spring概要文件,而不是混淆初始化时间属性值绑定,您可以做的是。。。 1) 读取属性文件(配置文件的) /WEB-INF/properties/${spring.profiles.active}.properties 2) 创建一个可以读取这些属性值的java类。(不要忘记使用spring profiles接口类) 3) 当您试图读取其位置嵌入在属性文件(步骤1)中的属性文件时,在步骤2创建的对象将为key
${app.config.batch.location}
现在可以使用可用的文件读取器类加载此属性文件。
4) 创建属性
对象并访问其中的值
注意:如果您的任何bean初始化依赖于步骤4中读取的键值,请手动进行初始化或创建***自定义类(servlet),该类在任何其他类(甚至是spring的DispacterServlet)之前加载。您似乎在使用spring概要文件,您可以做的不是处理初始化时间属性值绑定,而是。。。 1) 读取属性文件(配置文件的) /WEB-INF/properties/${spring.profiles.active}.properties 2) 创建一个可以读取这些属性值的java类。(不要忘记使用spring profiles接口类) 3) 当您试图读取其位置嵌入在属性文件(步骤1)中的属性文件时,在步骤2创建的对象将为key
${app.config.batch.location}
现在可以使用可用的文件读取器类加载此属性文件。
4) 创建属性
对象并访问其中的值
注意:如果您的任何bean初始化依赖于在步骤4中读取的键值,则手动进行初始化或创建***自定义类(servlet),该类在任何其他类(甚至是spring的DispacterServlet)之前加载.Hi@ЮЮЮЮПааааааааааааааааааааааа107。可能的方法是在构建系统处理资源时使用一些占位符,这些占位符由构建系统解析。我知道这一点,但我找不到实现它的方法。如果你能提出一些建议,那将很有帮助。谢谢。对于gradle,这将是这样的:
processResources{filesmatting('*.properties'){filter(ReplaceTokens,tokens:[MYTOKEN:'mytokenvalue'])}
在属性文件中,您想添加@MYTOKEN@
占位符hi@ЮЮЮааааПааааааааааааааа107,因为您在ArrayList bean配置中使用占位符,而您没有占位符。可能的方法是在构建系统处理资源时使用一些占位符,这些占位符由构建系统解析。我知道这一点,但我找不到实现它的方法。如果你能提出一些建议,那将很有帮助。谢谢。对于gradle,这将是这样的:processResources{filesmatting('*.properties'){filter(replacetokes,tokens:[mytokens:'mytokenvalue'])}
并且在属性文件中要添加@MYTOKEN@
占位符
<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>
app.config.batch.location=E:/project/properties/config.properties