@Hland

Как загрузить файлы локализации вне classpathа?

Проект на spring boot
Есть файлы с локазицацией:
-messages_en_US.properties
-messages_ru_RU.properties
Хочу добавить их в загрузку контекста.
Добавил свой бин настройки MessageSource. Проблема в том, что не могу их читать из какого-нибудь другого места на диске, кроме проекта

@Configuration
public class MessagesConfig {
    @Bean
    public MessageSource messageSource() {
        ResourceBundleMessageSource messageSource =
                new ResourceBundleMessageSource();
        messageSource.setBasenames(
                "file:/Users/sample/messages"
        );
        messageSource.setDefaultEncoding("UTF-8");
        return messageSource;
    }
}


Ошибка такая
[GlobalDefaultExceptionHandler.java] [] [handleHttpException] No message found under code 'sampe' for locale 'null'.
org.springframework.context.NoSuchMessageException: No message found under code 'sample' for locale 'null'.
  • Вопрос задан
  • 504 просмотра
Решения вопроса 1
@Hland Автор вопроса
Проблема была в том, что чтение файла не осуществлялось. Потому, что путь считается относительным.
В доке спринга при загрузке ресурсов сказано, чтобы использовать абсолютный путь надо использовать префикс "file". В resource bundle (ReloadableResourceBundleMessageSource) при этом файл читается как относительный текущей jar.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Любые ресурсы можно положить рядом с jar, это будет считаться что они лежат в "корне" classpath.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы