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

Mah*_*ran 1 java serialization

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

public void receive(Message<?> message)
{
    //I am inserting message contents into DB
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

Boz*_*zho 5

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

  • XML
  • JSON
  • BSON
  • MessagePack
  • protobufs
  • ...

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

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