为什么 bean class 应该被序列化

Why bean class should be serialized

为什么要序列化 ​​bean 类?

我在关于 spring MVC 的帖子中看到了 bean 类,它们总是被声明为序列化的并且有一个 private static final long serialVersionUID。为什么?

根据 JavaBean specification bean 应该被序列化。实际上,任何 Java class 都可以是一个 bean,如果它具有以下属性:

  1. 有一个无参数构造函数
  2. 有一些私有成员 access/manipulate 他们有一些 getter/setter
  3. 实施 serializable

参见 bean 的 wikipedia 定义。所以根据定义,它们是可序列化的。

并且 serialVersionUID 用作 Serializable class 的通用版本标识符。在反序列化过程开始时 class 被序列化之后,此数字用于确保加载的 class 与该序列化对象完全对应。

关于 servlet 的一个很好的理由是,如果您将可序列化的 bean 放入您的 Web 服务器会话中,您的 Web 服务器可以在关闭时将它们序列化到磁盘,然后在启动时将它们反序列化回内存向上。这样,当服务器恢复时,用户不会丢失他们的会话/登录。

如果会话中有任何不可序列化的 bean,tomcat 将无法将会话序列化到磁盘。

我相信如果你想在集群中的多个服务器之间同步会话也是必要的。