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被执行时,我得到了错误:
消息源未初始化-访问前请调用“刷新” 通过上下文失败消息,导致applicationContext加载失败
警告消息是messages.properties文件中的键。
在调试时,我发现即使创建了messageSource对象,也可能未加载消息导致此错误。
如果我不是在后构造中直接在执行方法中使用它,则它可以正常工作。 如果可能的话,有人可以对此提供一些启示吗?或者我做错了什么?