有一個罐子和JAR B,兩者在類路徑messages.properties
/Spring可以在classpath中支持多個messages.properties文件嗎?
而且有戰爭C,這對JAR A和B. JAR
當我開始WAR CI只能得到依賴性來自JAR A或JAR B的i18n消息。
那麼,Spring如何在類路徑中支持多個messages.properties
文件?
BTW,WAR C是彈簧啓動項目,spring.messages.basename=messages
有一個罐子和JAR B,兩者在類路徑messages.properties
/Spring可以在classpath中支持多個messages.properties文件嗎?
而且有戰爭C,這對JAR A和B. JAR
當我開始WAR CI只能得到依賴性來自JAR A或JAR B的i18n消息。
那麼,Spring如何在類路徑中支持多個messages.properties
文件?
BTW,WAR C是彈簧啓動項目,spring.messages.basename=messages
問題解決了。
根據這個問題Does Spring MessageSource Support Multiple Class Path?
揭露他們寫的有溝
ResourceBundleMessageSource
和(通過繼承AbstractMessageSource最有可能的),使用PathMatchingResourcePatternResolver
找到各種資源,並通過MessageSource
MessageSource
自定義實現
我製作了ReloadableResourceBundleMessageSource
的副本,並按照本指南編寫代碼並解決了問題。
是,Spring支持加載多個屬性。但屬性應該是唯一的。如果我們在兩個屬性文件中具有相同的屬性,那麼稍後將加載的文件將覆蓋先前文件中的以前的屬性。例如,如果來自JAR A的Properties文件具有兩個屬性{USERNAME,PASSWORD}並且JAR B Properties文件也具有相同的兩個屬性,那麼您將從稍後加載的文件中獲得{USERNAME,PASSWORD} 。
您可以使用通配符在您的類路徑中導入具有相同名稱的所有屬性文件。
在春天,你可以提陣列的形式不同的屬性文件內容如下:
<context:property-placeholder
location="classpath:war.properties,
classpath*:message.properties"
ignore-unresolvable="true"/>
或
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:war.properties</value>
<value>classpath*:message.properties</value>
</list>
</property>
<property name="ignoreUnresolvablePlaceholders" value="true"/>
</bean>
謝謝你,WAR C是一個spring啓動項目,MessageSource是由MessageSourceAutoConfiguration自動配置的。 我怎樣才能使這個工作? – chanjarster