【发布时间】:2011-11-12 12:16:18
【问题描述】:
我正在使用 LCDS 和 Flex。 当我将一个对象从 java 发送到 Flex 时,我不想发送所有属性。据我所知,如果您不想序列化,请制作一个瞬态变量。
例如。
private transient Date birthDate;
public Date getBirthDate(){
return birthDate;
}
public void setBirthDate(Date val){
birthDate = val;
//Some code here.
}
现在序列化的对象中不应该有birthDate。但是,当我看到 AMF 日志时,该对象中包含有值的birthDate。
序列化是否会查看代码并检查私有变量是瞬态的。(我不明白它如何访问私有属性。我有点困惑。)
我应该将变量标记为公开吗?然后getter和setter没有意义,而且我在setter方法中编写了一些代码。所以我需要二传手。
问题:
我在一本书(Enterprise flex with blazeds by Brain Telintelo,第 15 章)中读到,开箱即用的 Blazeds 只序列化具有匹配的 getter 和 setter 的文件。如果是这样的话,will blazeds 甚至会费心去检查私有财产是否是暂时的。
能否请一些人解释一下正常的序列化(不是 amf 序列化)是如何发生的并跟踪私有瞬态变量,即使它们有公共的 getter 和 setter。
如何使 java 变量在 Flex/LCDS/BlazeDS 环境中不序列化。
我在对象中有 50-60 个变量,不应该对 4 或 5 个变量进行序列化。所以在这么大的对象中编写自定义序列化器是一个很大的痛苦。我看到的另一个缺点是,如果我编写自己的序列化程序,hibernate 将无法使用此对象。
【问题讨论】:
标签: apache-flex serialization blazeds amf transient