java - Infinispan:类已更改且反序列化不起作用

标签 java spring serialization deserialization infinispan

我有一个使用 Infinispan 6.0.1.Final 的 Spring Boot 应用程序。我有两个类 A 和 B。B 扩展了 A。并且我有一个存储 B 类型对象的缓存。现在,我做了一个小更改,我将 2 个类字段及其 getter/setter 从 B 移动到 A,并且我已更新两个类中的序列号。当我重新启动应用程序并从缓存中提取类型 B 的对象时,我移动的字段显示为 null。

我的问题是:缓存包含B类型的对象(B的旧版本)。我已经更改了类 B,但从语义角度来看,该类仍然具有相同的字段和方法,因为我移动的字段现在位于父类中。是否可以像更改类之前一样进行反序列化?

最佳答案

只有当您知道在更改对象的类定义时可以删除 Infinispan 中的所有数据时,您才应该依赖 Java 序列化。

对于可移植对象表示,请使用 Protobuf 编码对象:

使用 protobuf,您可以更好地控制架构更新时数据的演变方式。顺便说一句,Infinispan 对此支持得很好,因为它是支持远程查询和其他一些高级功能的基本要求。

关于java - Infinispan:类已更改且反序列化不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43612515/

相关文章:

python - 如何在 Django 中使用多个嵌套字段覆盖序列化程序中的创建方法?

java - 如何在没有副作用的情况下提供有意义的验证错误反馈?

Java/Swing - 如何减小 JDialog 构造函数的大小?

performance - Oracle CLOB 性能

application.properties 中的 Spring.queries 属性

c# - 如何在c#中序列化哈希表

java - IntelliJ : create gradle modules in subfolders

java - Java 泛型的类型删除会导致完整类型转换吗?

spring - 我什么时候使用 XA 数据源和 2 阶段提交

java - Hazelcast 序列化嵌套对象