将具有瞬态属性的对象写入流(Java)
我想将一个对象写入一个流(或字节数组)及其瞬时属性,以便能够在另一个VM中重建它。我不想修改它的属性,因为该对象是遗留应用程序的一部分 标准Java序列化机制没有帮助。我还有其他选择吗 更新:将具有瞬态属性的对象写入流(Java),java,spring,serialization,remoting,transient,Java,Spring,Serialization,Remoting,Transient,我想将一个对象写入一个流(或字节数组)及其瞬时属性,以便能够在另一个VM中重建它。我不想修改它的属性,因为该对象是遗留应用程序的一部分 标准Java序列化机制没有帮助。我还有其他选择吗 更新: 我问这个问题的原因是我想修改现有的Spring应用程序。它在前面调用了bean的进程内方法,但现在我想将bean移动到单独的机器上,并通过HTTP调用器使用Spring远程处理。我对参数有一个问题,这些参数包含需要传递给此方法但不需要在应用程序的其他部分序列化的临时字段。临时变量应该是那些不可序列化或易于
我问这个问题的原因是我想修改现有的Spring应用程序。它在前面调用了bean的进程内方法,但现在我想将bean移动到单独的机器上,并通过HTTP调用器使用Spring远程处理。我对参数有一个问题,这些参数包含需要传递给此方法但不需要在应用程序的其他部分序列化的临时字段。
临时变量应该是那些不可序列化或易于重新计算的变量
我的第一个建议是在这个对象上寻找方法来重新计算transient
字段。transient
变量应该是那些不可序列化或很容易重新计算的变量
我的第一个建议是在这个对象上寻找方法来重新计算transient
字段。我假设您不能更改遗留代码。在这种情况下,我认为您必须使用and遍历对象字段 我假设您无法更改旧代码。在这种情况下,我认为您必须使用and遍历对象字段 Hmm-如果一个属性被标记为transient
,这意味着确切地说并不意味着它被视为对象持久状态的一部分,例如用于序列化。事实上,您希望这样做是一种代码味道,正确的解决方案是停止这些字段的瞬态
让我们假设,不管出于什么原因,您都不能修改目标类本身。我的第一个想法是,您可以通过实现readObject()
和writeObject()
方法来定制序列化,但这也需要更改目标类
在这种情况下,您需要使用某种基于反射或基于元数据的API才能做到这一点。有许多库可以将对象转换为XML、JSON或DB行等。最好使用其中一个库将对象转换为“水合”形式(可能需要自定义它们,因为任何健全的序列化程序都会忽略瞬态字段)。选择哪一个取决于您当前的软件堆栈和您的精确要求。Hmm-如果某个属性被标记为transient
,这意味着确切地说它并不意味着被视为对象持久状态的一部分,例如用于序列化。事实上,您希望这样做是一种代码味道,正确的解决方案是停止这些字段的瞬态
让我们假设,不管出于什么原因,您都不能修改目标类本身。我的第一个想法是,您可以通过实现readObject()
和writeObject()
方法来定制序列化,但这也需要更改目标类
在这种情况下,您需要使用某种基于反射或基于元数据的API才能做到这一点。有许多库可以将对象转换为XML、JSON或DB行等。最好使用其中一个库将对象转换为“水合”形式(可能需要自定义它们,因为任何健全的序列化程序都会忽略瞬态字段)。选择哪一个取决于您当前的软件堆栈和精确的需求