Jackson注解的MixIn

Jackson需要根据注解设置一些配置和操作,可能在类、接口、方法、字段上。

mixin的意思是混入,这里的意思是将其它的注解注解混入目标对象中,这个对象可能是类、接口、方法、字段。

为什么需要混入,因为有些类型是外部引入的,自己不可以修改。但json序列化或反序列时又需要注解来定制一些特殊操作。

这时就出现了混入,将另一个类从类本身到内部字段和方法的注解通过混入合并到需要序列化和反序列化的目标类上。

但这个混入合并并不是修改了目标类的结构,只是在jackson层面生成了一个个的映射关系,键名是类型或方法签名,键值是搜集并合并的所有注解。

所以混入的注解在jackson层面有效,因为这个映射关系只保存在它这里,并且只有它能拿到并应用。

这种注解混入的思想可以学习并用来为自己所用。

在SringSecurity中就通过注解混入来解决反序列化时安全配置问题。

Jackson注解的MixIn

反序列化时只允许满足三种条件的类型执行:SpringSecurity的白名单内、被混入、被JacksonAnnotation注解。

Jackson注解的MixIn

这是SpringSecurity提供的默认混入类型,其中还包括处理最新时间类型的JavaTimeModule。

上一篇:Json传输BigDecimal类型数据时候丢失无用0解决方案


下一篇:Mysql设置主从同步