天天看點

protostuff的坑

定義一個包裝類:

序列化是判斷下,哪些不支援的集合,放在包裝器裡

還有要注意的:

1、嵌套對象時,子對象不可以是内部類,不然序列化時會棧溢出。 

2、每個類需要有預設的構造方法。

protostuff有一個特點就是你反序列化的時候需要指定反序列化的類型Class,而如果按正常spring-data-redis規範,隻能實作RedisSerializer接口,其中反序列化接口T deserialize(byte[] bytes) throws SerializationException;無法指定Class,是以換個思路,我們在調用redisTemplate操作的時候不是直接放對象而是直接放序列化後的byte[],而反序列化的時候擷取byte[]再通過protostuff轉為對應的class。注意一點是enableDefaultSerializer這個屬性要置為false,并且不要配置valueSerializer因為如果不設定該屬性RedisTemplate初始化的時候會指定預設的序列化也就是JdkSerializationRedisSerializer來作為序列化和反序列化。

繼續閱讀