Альтернативным решением для уже упомянутых было бы использование свойства parentMessageSource
, которое делегирует поиск сообщения родителю, если оно не находит его в текущем экземпляре.
В вашем случае, вероятно, лучшеостаться с массивом basenames
.Наличие иерархического источника сообщений может иметь больше смысла, если источники сообщений используют разные реализации.Например, второе чтение сообщений из базы данных.
Обратите внимание, что в этом случае, когда Spring находит два экземпляра MessageSource
, поэтому основным будет тот, который имеет идентификатор messageSource
.
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="parentMessageSource"><ref bean="anotherMessageSource"/></property>
<property name="basename" value="classpath:i18n/messages"/>
<property name="defaultEncoding" value="UTF-8"/>
</bean>
<bean id="anotherMessageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="classpath:i18n/newmessages"/>
<property name="defaultEncoding" value="UTF-8"/>
</bean>