Open Fixfly-SS opened 3 weeks ago
类里面嵌套的对象类型怎么指定呢?
类里面嵌套的对象类型怎么指定呢?
对象里嵌套对象的类型 不需要指定, json 序列化和反序列化 都不需要指定内层嵌套对象的类型, 比如 AA.class 里 有BB.class 类型的嵌套对象, 序列化和反序列化工具都可以自动处理, 通过AA.class 反射也可以拿到BB.class
当然 如果缓存的第一层对象是List
没那么简单,都不用List,Object类型字段就搞不定,实际可以是类A,也可以是类B
没那么简单,都不用List,Object类型字段就搞不定,实际可以是类A,也可以是类B
一般嵌套对象,类型不确定的情况相对少一些,或者针对这种无法简单反序列化的情况,注解里可以注入自定义反序列化的class, 就是框架 只提供相对简单类型的处理方案, 如果缓存的对象 过于复杂, 可以自己指定反序列化处理器,自己处理,不知道这样是否可行, 毕竟写入类信息这种方式, 一单重命名一下 就失效了, 甚至引发错误
你这样也解决不了所有的问题,默认内置的话一定会有无数人来问,说怎么有这么大坑的,我不干这事。
但你可以自己搞,反序列化器可以自己扩展的。定义SpringConfigProvider的时候,注入自己的encoderParser,你自己定义个DefaultEncoderParser,把parseDecoder覆盖一下就好了(你需要传参数给它,所以DefaultSpringEncoderParser也解决不了你的问题)。最后大概写这样:
@Cached(... serialPolicy = "myjson?class=com.xxx.MyClass")
以json序列化方式举例 如果使用注解的方式的时候, 可以注解里定义 序列化的class,或者根据方法返回类型确定要序列化的类型, 这样序列化的时候,就可以不写入类信息, 反序列化的时候也可以确定类型