【问题标题】:Serializable class, what should be the field with spring可序列化的类,用spring的字段应该是什么
【发布时间】:2014-05-05 16:11:56
【问题描述】:

如果我有一个 Serializable 类,

public class Solar implements Serializable {
@Autowired
private CategoryDAO categoryDAO;

}

当我使用此消息构建 findBugs 时会显示此消息:

这个 Serializable 类定义了一个非原始实例字段,它 既不是瞬态的、可序列化的或 java.lang.Object 的,也不是 似乎实现了 Externalizable 接口或 readObject() 和 writeObject() 方法。这个类的对象不会 如果非序列化对象存储在此中,则正确反序列化 字段。

哪些字段看起来不像错误?

【问题讨论】:

  • IMO 它与 Spring 没有任何关系。看起来它只是关于可序列化的类的(反)序列化,但定义了一个不可序列化的字段。
  • 那也应该是字段序列化吧?
  • CategoryDAO 也应该是可序列化的
  • 如果我们在这里讨论的是一个真正的 DAO,它应该被标记为 transient - 对我来说序列化一个 DAO 没有意义。
  • 我知道了,非常感谢:)

标签: findbugs


【解决方案1】:

这与 Spring 无关。看起来它只是关于可序列化但定义不可序列化的类的(反)序列化。

Serializable 是在类级别定义的 - 就像您对 Solar 所做的那样(不是在字段级别)。

但是,如果我们在这里讨论的是真正的 DAO,它应该被标记为瞬态的 - 对我来说序列化 DAO 是没有意义的。

【讨论】:

  • 是的,我注意到 IT 应该为 DAO 和 BA 类添加瞬态,但是如果我需要对 DTO 或其他对象进行序列化,我必须对类进行序列化。谢谢我真的在这个问题中学到了一件重要的事情!谢谢stackoverflow!
  • 刚刚带给我的是serializable 或临时检查不应该发生在实体的字段上。因为它可以在转换器中序列化。
猜你喜欢
  • 2020-02-02
  • 2018-09-12
  • 2016-12-12
  • 1970-01-01
  • 1970-01-01
  • 2020-03-15
  • 2017-04-17
  • 1970-01-01
相关资源
最近更新 更多