【发布时间】:2010-12-15 15:34:32
【问题描述】:
我想要做的是序列化一个类 实现了一个命令模式,以便我以后可以运行它。最好的 在所有世界中,我想序列化一个匿名类(我是 意识到这个问题)
让事情变得有点复杂的是,我在春天的环境中,而且 我希望序列化的匿名类在一个类中定义 由 CGLib 代理。
我的初步尝试:
public interface CallLater implements Serializeable {
public run();
}
@Service
public class TestService implements Serializeable {
public doSomethingMore() { /* Code */ }
public void doSomething() {
CallLater job = new CallLater() {
private static final long serialVersionUID = 4415017504667122645L;
@Override
public void run() {
doSomethingMore();
}
}
storeJob(job);
}
}
例如 storeJob 将序列化对象并将其存储以供以后使用 这部分失败。我没有包含此代码,但只是 ObjectOutputStream 调用
我知道整个 TestService 类都需要序列化。问题是 它被包装了一个 CGLib 代理并且这个代理没有实现可序列化 (我的猜测是这个不能序列化)。
非常感谢任何帮助。
【问题讨论】:
-
堆栈跟踪会很有帮助
-
CGLib 代理是 TestService 的子类,因此实现了 Serializable,不是吗?也许它通过实现 writeObject 方法来防止序列化?
-
@Christian:我猜
TestService在某处引用了不可序列化的东西。
标签: java spring serialization command-pattern cglib