网页网站设计制作,自己电脑做网站模板,南京企业网站制作哪家好,深圳网站建设叶林redis序列化设置 redis序列化设置序列化对象里有org.joda.time.DateTime1#xff09;、报错内容如下2#xff09;、解决方案#xff1a;分别自定义时间的序列化和反序列化#xff0c;以对象形式关联到redisTemplate redis序列化设置
redis序列化设置#xff0c;通过自定义… redis序列化设置 redis序列化设置序列化对象里有org.joda.time.DateTime1、报错内容如下2、解决方案分别自定义时间的序列化和反序列化以对象形式关联到redisTemplate redis序列化设置
redis序列化设置通过自定义redisTemplate配置
Component
public class RedisConfig {Beanpublic RedisTemplateString, Object redisTemplate(RedisConnectionFactory redisConnectionFactory) {RedisTemplateString, Object redisTemplate new RedisTemplate();redisTemplate.setConnectionFactory(redisConnectionFactory);StringRedisSerializer strRedisSerializer new StringRedisSerializer();//序列化key值redisTemplate.setKeySerializer(strRedisSerializer);//解决value的序列化方式Jackson2JsonRedisSerializer jackson2JsonRedisSerializer new Jackson2JsonRedisSerializer(Object.class);redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);return redisTemplate;}
}到这若测试没问题下面就不用看了
序列化对象里有org.joda.time.DateTime
1、报错内容如下
org.springframework.data.redis.serializer.SerializationException: Could not write JSON: Joda date/time type org.joda.time.DateTime not supported by default: add Module com.fasterxml.jackson.datatype:jackson-datatype-joda to enable handling
org.springframework.data.redis.serializer.SerializationException: Could not write JSON: Joda date/time type org.joda.time.DateTime not supported by default: add Module com.fasterxml.jackson.datatype:jackson-datatype-joda to enable handling (through reference chain: com.xx.XXModel[BBModel]-com.xx.XXModel[startDate]);
...2、解决方案分别自定义时间的序列化和反序列化以对象形式关联到redisTemplate
分别自定义一个org.joda.time.DateTime的序列化和发序列化类然后关联到自定义的redisTemplate代码如下 1、DateTimeJsonDeserializer public class DateTimeJsonDeserializer extends JsonDeserializerDateTime {Overridepublic DateTime deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JacksonException {String dateString jsonParser.readValueAs(String.class);DateTimeFormatter formatter DateTimeFormat.forPattern(yyyy-MM-dd HH:mm:ss);return DateTime.parse(dateString, formatter);}
}2、DateTimeJsonSerializer
public class DateTimeJsonSerializer extends JsonSerializerDateTime {Overridepublic void serialize(DateTime dateTime, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {jsonGenerator.writeString(dateTime.toString());}
}3、RedisConfig
Component
public class RedisConfig {Beanpublic RedisTemplateString, Object redisTemplate(RedisConnectionFactory redisConnectionFactory) {RedisTemplateString, Object redisTemplate new RedisTemplate();redisTemplate.setConnectionFactory(redisConnectionFactory);StringRedisSerializer strRedisSerializer new StringRedisSerializer();redisTemplate.setKeySerializer(strRedisSerializer);Jackson2JsonRedisSerializer jackson2JsonRedisSerializer new Jackson2JsonRedisSerializer(Object.class);ObjectMapper objectMappernew ObjectMapper();SimpleModule simpleModulenew SimpleModule();simpleModule.addSerializer(DateTime.class, new DateTimeJsonSerializer());simpleModule.addDeserializer(DateTime.class, new DateTimeJsonDeserializer());objectMapper.registerModule(simpleModule);jackson2JsonRedisSerializer.setObjectMapper(objectMapper);redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);return redisTemplate;}
}