为什么bean类应该被序列化

时间:2015-03-21 14:53:01

标签: java spring spring-mvc javabeans

为什么要将bean类序列化?

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

2 个答案:

答案 0 :(得分:2)

根据JavaBean specification bean应序列化。实际上,如果任何Java类具有以下属性,则它们可以是bean:

  1. 有一个无参数构造函数
  2. 有一些私人成员并且访问/操纵他们有一些getter / setter
  3. 实施serializable
  4. 请参阅bean的wikipedia定义。因此根据定义它们是可序列化的。

    serialVersionUID用作Serializable类的通用版本标识符。在反序列化过程出现后序列化的类之后,此数字用于确保加载的类与该序列化对象完全对应。

答案 1 :(得分:2)

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

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

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