Java 使用Ehcache自定义序列化

Java 使用Ehcache自定义序列化,java,serialization,ehcache,Java,Serialization,Ehcache,当将对象从内存移动到磁盘或堆外缓存或以其他方式移动时,是否可以告诉Ehcache使用自定义序列化?我想从序列化中跳过一些未声明为瞬态(第三方库)但不需要存储的字段,因为我可以轻松地重新计算它们。我想这样做是为了节省一些内存。充其量,我想使用像Kryo这样的库。我通过使用包装器和添加另一个抽象层,序列化包装器找到了一个解决方案。此处提供的包装器使用Kryo: final class SerializationWrapper implements Serializable { private

当将对象从内存移动到磁盘或堆外缓存或以其他方式移动时,是否可以告诉Ehcache使用自定义序列化?我想从序列化中跳过一些未声明为瞬态(第三方库)但不需要存储的字段,因为我可以轻松地重新计算它们。我想这样做是为了节省一些内存。充其量,我想使用像Kryo这样的库。

我通过使用包装器和添加另一个抽象层,
序列化包装器找到了一个解决方案。此处提供的包装器使用Kryo:

final class SerializationWrapper implements Serializable {

  private final static Kryo KRYO = new Kryo();
  private Object object;

  public SerializationWrapper(Object object) {
    this.object = object;
  }

  private void readObject(ObjectInputStream objectInputStream) 
      throws IOException, ClassNotFoundException {
    Input input = new Input(objectInputStream);
    object = KRYO.readClassAndObject(input);
    input.close();
  }

  private void writeObject(ObjectOutputStream objectOutputStream) 
      throws IOException {
    Output output = new Output(objectOutputStream);
    KRYO.writeClassAndObject(output, object);
    output.close();
  }

  public Object getWrappedObject() {
    return object;
  }
}

将调用序列化方法
readObject
writeObject
,并允许我实现自定义序列化。此外,此解决方案不会产生大小开销,因为我只将包装对象写入输出流,而完全跳过包装的写入。您还可以获取更多帮助我的信息。

输出/输入导入在哪里?它们在
com.esotericsoftware.kryo.io
package中定义