为什么Java Bean必须可序列化?


问题内容

Java Bean是否必须实现Serializable接口?


问题答案:

这是Javabeans规范中描述的“典型”功能之一。

这是第 2.1 章的摘录 什么是bean?

各个Java Bean支持的功能会有所不同,但是区分Java Bean的典型统一功能是:

  • 支持“自省”,以便构建器工具可以分析bean的工作方式
  • 支持“自定义”,以便在使用应用程序构建器时,用户可以自定义Bean的外观和行为。
  • 支持“事件”作为一种简单的通信隐喻,而不是用来连接bean。
  • 支持“属性”,用于自定义和编程使用。
  • 支持持久性,以便可以在应用程序构建器中自定义bean,然后保存其自定义状态并在以后重新加载。

这是第 5.5持久性摘要 的摘录:

所有bean必须支持序列化或外部化。

在实践中,它并不一定要起作用。通常,如果不执行它,它也可以正常工作Serializable。但是,当您要将它们“普通”存储在硬盘上或通过网络发送“普通”时,它很有用。例如,当它是一个会话范围的bean(将存储在HTTP会话中)并且服务器被配置为在关闭/重新启动期间持久并恢复HTTP会话时。无论如何,只要您NotSerializableException在消息中遇到带有Bean的完整合格类名的,它就足以使它实现Serializable