java - 如何在不实现 Serializable 接口(interface)的情况下序列化/反序列化对象?

标签 java serialization

如果邮件发送到我的收件箱,我会收到一条消息,并且我正在将内容插入到数据库中。 我有一个 org.springframework.integration.core.Message 如下所示:

public void receive(Message<?> message)
{
    //I am inserting message contents into DB
}

现在如果发生故障,我希望有故障安全恢复机制,我想的是将 Message 对象序列化到一个文件中,然后反序列化并更新到 DB。

问题 1、这种情况下如何序列化Message对象? 2. 除了序列化还有什么其他机制可以使用?

编辑 我以前没有做过序列化,听说类应该实现Serializable才能使用ObjectOutputStream,在这种情况下我不想创建Message的子类,那么如何将Message序列化为文件?

最佳答案

当然,除了 jvm 之外,还有许多序列化机制。

  • XML
  • JSON
  • BSON
  • 消息包
  • protobufs
  • ...

其中一些是基于文本的,一些是二进制的。都有缺点和优点。基于文本的是人类可读的,二进制的更快并且占用更少的空间。

有处理上述所有格式的 java 库:JAXB (XML)、Jackson (JSON) 等。

关于java - 如何在不实现 Serializable 接口(interface)的情况下序列化/反序列化对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14134628/

相关文章:

java - 为什么StringBuffer的readObject不同步?

java - 使用 Velocity 模板语言 (VTL) 从数组中删除某些元素

java - 同一路线构建器中不同路线上的 Camel Exchange

android - 我可以序列化在 Canvas 上绘制的路径以在重新启动应用程序时重新绘制路径吗

java - 当模型对象不可序列化时,在集群 wicket 环境中会发生什么?

c# - 在 C# 中对 boolean 变量进行序列化反序列化的最简单方法是什么?

ruby-on-rails - 如何添加到序列化数组

java - 如何将简单值表单ui表单传递给spring webflow

java - Quartz 调度程序最大线程数属性

java - 无法使用 JAXB 正确解码包含选项卡的 XML 文件?