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

如果邮件发送到我的收件箱,我会收到一条消息,然后我将内容插入到数据库中。 我有一个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序列化为File?

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

  • XML
  • JSON
  • BSON
  • MessagePack
  • protobufs

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

有一些java库可以处理所有上述格式:JAXB(XML),Jackson(JSON)等。

在这种情况下如何序列化Message对象? 除序列化之外还有其他可以使用的机制吗?

从消息中提取所需的所有数据并保存。 您可以以您选择的任何方式执行此操作。

您可以通过使用保存的数据填充新消息来反序列化它。

我不知道我是否理解它是正确的..但假设Message不仅仅是许多字符串和一些整数,你可以直接使用ObjectOutputStream并将其写入文件(二进制)然后再读取。 为什么不?

 Message e = new Message(); ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("whatever"); oos.writeObject(message); // read in ObjectInputStream ois = new ObjectInputStream(new FileInputStream("whatever"); Message e = (Message) ois.readObject();