#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
выше CustomMessageSource4. Это уже есть в моем коде. не скопировал его. я не вижу заполненный объект. единственное, что сообщения не загружаются до тех пор
5. @Rips, что бы вы ни делали, я просто говорю вам, что вы должны попробовать сделать это позже. Я просто интерпретирую, что говорит мне ошибка, которую вы получаете. — всякий раз, когда вы видите это сообщение о «обновлении», оно сообщает вам, что контекст не согласован. Вы часто получаете это сообщение при запуске, что означает, что контекст еще не полностью собран.