我想要做的是序列化一个实现命令模式的类,这样我以后就可以运行它了。在最好的情况下,我想序列化一个匿名类(我知道这样做的问题)。
让它有点复杂的是,我在一个spring环境中,我希望序列化的匿名类是在一个将由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代理,并且这个代理没有实现可序列化(我猜这个代理不能被序列化)。
任何帮助都是非常感谢的。
发布于 2010-12-16 05:31:47
你应该只序列化"target“。所以你有一个对代理的引用,对吗?可以获取该代理的目标,以便您可以对其进行序列化。
要做的事情是在序列化之前对应用程序进行断点,并在上下文中挖掘所需的属性。或者可能有一些代理实用程序或其他东西。
https://stackoverflow.com/questions/4451695
复制相似问题