MessageSource Spring:NotSerializableException

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MessageSource Spring:NotSerializableException相关的知识,希望对你有一定的参考价值。

我正在使用MessageSource在Spring中实现国际化。

我有类似的东西。

在我的Config类中:

@Bean
public ReloadableResourceBundleMessageSource messageSource() {
    ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
    messageSource.setBasename("classpath:messages");
    messageSource.setDefaultEncoding("UTF-8");
    messageSource.setUseCodeAsDefaultMessage(true);
    return messageSource;
}

我的春豆

@Component
class MyClass implements Serializable {

    @Autowired(required = true)
    private MessageSource messages;
}

当我运行我的项目时,我得到了这个例外:

Caused by: java.io.NotSerializableException: org.springframework.context.support.ReloadableResourceBundleMessageSource

SomeOne可以指导我如何解决这个问题。

答案

根据您在此处提供的信息,问题在于您的ReloadableResourceBundleMessageSource类,因为它没有实现Serializable接口。

这是由你的class MyClass implements Serializable引起的,因为Serializable类中的变量应该是Serializabletransient

所以根据你的类,你的ReloadableResourceBundleMessageSource类应该实现Serializable接口或在你的MyClass中,变量应该如下

@Autowired(required=true)
private transient MessageSource messages;

希望能帮助到你

以上是关于MessageSource Spring:NotSerializableException的主要内容,如果未能解决你的问题,请参考以下文章

java 通过注释Spring Spring MVC messageSource配置

Spring messageSource

Spring Boot (1.4.1) 和 Thymeleaf (3) MessageSource 单引号

Thymeleaf + Spring (not Boot) - 如何显示来自 messageSource 的消息

Spring Boot MessageSource 在 application.properties 中不起作用

Spring BootSpringMVC进行i18n国际化支持:使用MessageSource