私がやりたいのは、コマンドパターンを実装するクラスをシリアル化して、後で実行できるようにすることです。すべての世界で、匿名クラスをシリアル化したいと思います(これに関する問題を認識しています)
少し複雑なのは、私が春の環境にいて、シリアル化する匿名クラスが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プロキシがスローされ、このプロキシがシリアル化可能を実装していないことです(これはシリアル化できないと思います)。
どんな助けでも大歓迎です。