Spring PostConstruct не загружает все сообщения в MessageSource

#java #spring #spring-bean

#java #spring #spring-bean

Вопрос:

 private String message;
@Autowired
private CustomMessageSource   messageSource;
@PostConstruct
public void postConstruct() {
   message= messageSource.getMessage("warning-message");
   logger.log(message);
}

@Component
public class CustomMessageSource extends ReloadableResourceBundleMessageSource {
    @Autowired
    private ApplicationContext  ctx;
    public CustomMessageSource() {
        Locale.setDefault(Locale.ENGLISH);
    }
    public String getMessage(String key) {
        return ctx.getMessage(key, new Object[] { }, getCurrentLocale());
    }
}
 

в приведенном выше коде, когда выполняется @PostConstruct, я получаю сообщение об ошибке:

messagesource не инициализирован — вызов «обновить» перед доступом к сообщениям через контекст при сбое загрузки ApplicationContext

предупреждение-сообщение является ключом в файле messages.properties.

При отладке я обнаружил, что, хотя объект MessageSource создан, но, вероятно, сообщения не загружались, вызывая эту ошибку.

если вместо post construct я использую его непосредственно в методах выполнения, он работает правильно. Может ли кто-нибудь, пожалуйста, пролить некоторый свет на это, если это вообще возможно, или, может быть, я делаю что-то не так?

Комментарии:

1. Как объявляется MessageSource? Возможно, здесь может помочь @dependsOn …

2. @PamStums Я обновил вопрос с дополнительными деталями

3. Я думаю, вам следует добавить @Component выше CustomMessageSource

4. Это уже есть в моем коде. не скопировал его. я не вижу заполненный объект. единственное, что сообщения не загружаются до тех пор

5. @Rips, что бы вы ни делали, я просто говорю вам, что вы должны попробовать сделать это позже. Я просто интерпретирую, что говорит мне ошибка, которую вы получаете. — всякий раз, когда вы видите это сообщение о «обновлении», оно сообщает вам, что контекст не согласован. Вы часто получаете это сообщение при запуске, что означает, что контекст еще не полностью собран.