请考虑以下代码:
<bean id="busmessageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames">
<list>
<value>classpath:bundles/resource</value>
<value>classpath:bundles/override</value>
<value>file:/C:/mmt/override</value>
</list>
</property>
<property name="cacheSeconds" value="100" />
</bean>
当我致电bundles/resource
bundles/override
和busmessageSource.getMessage("anykey", null, null)
中的属性
但是当我尝试在C:/mmt/override
file:/C:/mmt/override
覆盖classpath:bundles/override
中的值。如何覆盖war文件夹之外的外部文件中的属性?答案 0 :(得分:7)
1。)我有以下三种方式:
C:/mmt/
&#34;文件夹到您的资源类路径。<beans:bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<beans:property name="basename">
<beans:value>file:/path/to/messages</beans:value>
</beans:property>
</beans:bean>
注1 :必须使用} file:
前缀和ReloadableResourceBundleMessageSource
类。
Note2 :不将&#34; .properties&#34;扩展
2。)在加载具有相同属性名称(键)的新属性文件时,可以覆盖以前的值。您必须确保最后获取要使用的属性文件。
答案 1 :(得分:3)
你可以尝试
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="defaultEncoding" value="UTF-8"/>
<property name="basenames">
<list>
<value>classpath:bundles/resource</value>
<value>classpath:bundles/override</value>
<value>file:C:/mmt/override</value>
</list>
</property>
</bean>
关于消息资源备注:
答案 2 :(得分:0)
我遇到了类似的问题(通过问题的标题)并设法用java.util.Properties
实例化Spring ResourceBundleMessageSource。
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setCommonMessages(properties);
有点天真的方法,但是我的单元测试工作。