gpt4 book ai didi

java - 使用 Ehcache 自定义序列化

转载 作者:行者123 更新时间:2023-11-30 04:19:32 26 4
gpt4 key购买 nike

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

最佳答案

我通过使用包装器并添加另一个抽象层(SerializationWrapper)找到了解决方案。这里展示的包装器使用 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;
}
}

序列化方法readObjectwriteObject将被调用by the Java contract并允许我实现自定义序列化。此外,此解决方案不会产生大小开销,因为我只将包装的对象写入输出流并完全跳过包装器的写入。您还可以read this documentation了解更多信息对我帮助很大。

关于java - 使用 Ehcache 自定义序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17431500/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com