为什么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
。