Java Bean 是否必须实现 Serializable
接口?
这是在JavaBean规范中描述的“典型”功能之一。
以下是第2.1节 什么是bean?的摘录:
单个Java Bean将因其支持的功能而异,但区分Java Bean的典型统一特征包括:
- 支持“内省”,以使构建工具能够分析bean的工作方式
- 支持“自定义”,以便在使用应用程序构建器时,用户可以自定义bean的外观和行为。
- 支持“事件”作为一个简单的通信隐喻,可用于连接bean。
- 支持“属性”,既用于自定义又用于编程使用。
- 支持持久性,以便在应用程序构建器中自定义bean,然后保存其自定义状态并稍后重新加载。
以下是第5.5节 持久性总结的摘录:
所有bean必须支持Serialization或Externalization中的任何一个。
实际上,为了使它正常工作,并不需要显式地实现 Serializable
接口。但是,如果您想将它们“原封不动”地存储在硬盘上或通过网络发送,则实现该接口会非常有用。例如,当它是一个要存储在 HTTP 会话中的会话作用域 bean, 并且服务器被配置为在关闭/重启期间持久化和恢复 HTTP 会话时。无论如何,如果您遇到带有 bean 的完全限定类名的 NotSerializableException
,那么这就足以让它实现 Serializable
接口。
是的。
按照定义,Java Bean 就是一个可序列化的 POJO(普通的 Java 对象),拥有无参构造函数和带有 getter/setter 的私有字段。
ApplicationScoped
bean,它们需要实现 Serializable 接口吗? - Rajat Gupta