У меня есть этот проект с несколькими модулями:
Parent Pom
|
|----Main module (@SpringBootApplcation and application.properties)
|
|----Module I
|
|----Module II
|
|----Module III
Главный модуль зависит от других модулей и содержит messages.properties и messages_fr.properties под resources/messages/, а также application.properties, где я определил компонент MessageResourcespring.messages.basename=messages/messages.
Теперь я хотел бы поместить файлы messages.properties в каждый модуль. Например, для модуля I в src/main/resources/messages/messages.properties то же самое для модуля II.
У меня вопрос: как добавить сообщения модуля в bean-компонент MessageResource, определенный в application.properties?
Я пробовал несколько таких объявлений:
spring.messages.basename=messages/messages,classpath:/com/company/moduleI/resources/messages/messages или spring.messages.basename=messages/messages,classpath:moduleI/resources/messages/messages, но никто не работает.
Есть ли способ добиться этого?
@KenBekov Я только что попробовал, но результат тот же
Проверьте, существует ли этот файл в корневом пути к классам (target). Если это не так, вы можете использовать плагин сборки Maven для копирования (и переименования) файлов из модулей зависимостей.
@KenBekov Когда я заглянул внутрь основного модуля .jar, все остальные модули находятся в его папке lib. Файлы ресурсов каждого модуля находятся в корне пути к классам модуля. Я посмотрю на этот плагин сборки Maven. Я дам Вам знать. Спасибо за подсказку
Я наконец нашел лучшее решение, используя ResourceBundleMessageSource#addBasenames(...) для добавления сообщений всех модулей.
РЕДАКТИРОВАТЬ
В каждом модуле я переименовал файлы сообщений, например для модуля I у меня были resources/messages/moduleI-messages.properties, resources/messages/moduleI-messages_en.properties.
Затем я определил в этом модуле класс конфигурации, чтобы добавить исходные файлы сообщений.
@Configuration
public class ModuleConfig {
private final ResourceBundleMessageSource messageSource;
@PostConstruct
public void addMessageBaseName() {
messageSource.addBasenames( "messages/module1-messages" );
}
}
Я уверен, что может быть лучший способ пойти, но я его не нашел.
какие строки вы передали addBasenames, чтобы это работало?
По умолчанию Maven копирует содержимое папки
resourceв корень пути к классам. Вы пробовалиclasspath:messages/messages?