Spring 服务应该是可序列化的

Nam*_*ala 3 java serialization spring spring-mvc

我正在开发 Spring-mvc 应用程序。

我得到NotSerializableException.

服务器重启时出现异常。我搜索了解决方案并了解到应该序列化会话范围的 bean。

我的会话范围 bean 实现了可序列化,但它为注入的 bean 和服务提供了例外。

它要求我序列化所有注入的 bean 和服务。

我已经序列化了我的 bean,但是还需要序列化服务。

序列化服务也是可接受的行为吗?如果是,那么我是否必须序列化应用程序中的所有服务?

谢谢。

Mah*_*dra 5

每当您重新启动或关闭它并在启动时恢复会话时,Tomcat 都会序列化会话作用域 bean。您可以serializable为要恢复的 bean实现。否则跳过此错误。

编辑:创建一个类 serializable意味着该类不得包含不可序列化的引用或必须声明这些引用transient

在反序列化对象时,transient字段将重置为默认值,因此您可能需要使用if( transientField == null) { .. }

  • @Mathendra 可能会很好地使用需要在会话加载时重新设置瞬态变量的说明来扩展答案。(通常: if (... == null) { ... } . 虽然我个人认为没有会话状态 bean 应该包含对外部服务的引用,但看起来提出问题的人有这个。 (3认同)