Spring postConstruct不会在messageSource中加载所有消息

时间:2019-04-19 11:12:11

标签: 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被执行时,我得到了错误:

  

消息源未初始化-访问前请调用“刷新”   通过上下文失败消息,导致applicationContext加载失败

警告消息是messages.properties文件中的键。

在调试时,我发现即使创建了messageSource对象,也可能未加载消息导致此错误。

如果我不是在后构造中直接在执行方法中使用它,则它可以正常工作。 如果可能的话,有人可以对此提供一些启示吗?或者我做错了什么?

0 个答案:

没有答案