【问题标题】:Why does a Spring bean have to be Serializable? [duplicate]为什么 Spring bean 必须是可序列化的? [复制]
【发布时间】:2019-08-05 08:07:49
【问题描述】:

PMD 发现了我拥有的许多 Spring 组件,其中包含不可访问的成员(没有 getter 或 setter),并说 the following

如果一个类是一个bean,或者被一个bean直接引用,或者 间接地它需要可序列化。成员变量需要 标记为瞬态、静态或在类中有访问器方法。 将变量标记为瞬态是最安全和最简单的修改。 访问器方法应遵循 Java 命名约定,即对于 名为 foo、getFoo() 和 setFoo() 访问器方法的变量应该是 提供。

我想知道,为什么 Spring 组件/bean 必须是可序列化的??

另外,它是否由 Spring 文档支持(我没有找到...)

【问题讨论】:

  • 不必如此。当然,除非您将此类 bean 的实例存储在会话中,并希望会话可存储在磁盘上或分布在集群中的节点之间。
  • @xlecoustillier,这不是重复的,因为我在谈论 Spring Beans 而另一个线程在谈论 Java Beans
  • 这句话和它的上下文根本没有提到 Spring,所以它含蓄地谈论了 Java Beans。

标签: spring javabeans serializable pmd spring-bean


【解决方案1】:

我不记得我的“所有”Spring 组件都写成可序列化的,我不知道为什么它们应该是可序列化的。

但是,可以存储在数据库中的数据组件和可以在网络上传输的组件必须是。 Spring 风格的 Java Bean 是简单的 POJO,这是权衡取舍的一部分。

在过去,JEE Java Bean(又名 EJB)必须实现许多功能才能由应用程序容器管理。 Spring 作为一个轻量应用容器出现了,改变了这一切。 Spring 管理简单的 POJO,所以我想让它可序列化并不是太糟糕的权衡。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-20
    • 1970-01-01
    • 1970-01-01
    • 2019-05-30
    • 2011-07-12
    • 2011-04-14
    • 1970-01-01
    • 2011-07-06
    相关资源
    最近更新 更多