org. springframework. data. redis. serializer. SerializationException:
Could not read JSON: Cannot construct instance of java. time. Instant ( no Creators, like default construct, exist) : cannot deserialize from Object value ( no delegate- or property- based Creator)
redis 配置的 jackson ObjectMapper
所需的额外依赖
< dependency>
< groupId> com.fasterxml.jackson.module</ groupId>
< artifactId> jackson-module-parameter-names</ artifactId>
</ dependency>
< dependency>
< groupId> com.fasterxml.jackson.datatype</ groupId>
< artifactId> jackson-datatype-jdk8</ artifactId>
</ dependency>
< dependency>
< groupId> com.fasterxml.jackson.datatype</ groupId>
< artifactId> jackson-datatype-jsr310</ artifactId>
</ dependency>
ObjectMapper objectMapper = new ObjectMapper ( )
. registerModule ( new ParameterNamesModule ( ) )
. registerModule ( new Jdk8Module ( ) )
. registerModule ( new JavaTimeModule ( ) ) ;
Redis 完整的配置文件
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate< String, Object> redisTemplate ( RedisConnectionFactory redisConnectionFactory) {
Jackson2JsonRedisSerializer< Object> serializer = new Jackson2JsonRedisSerializer < > ( Object. class ) ;
ObjectMapper objectMapper = new ObjectMapper ( )
. registerModule ( new ParameterNamesModule ( ) )
. registerModule ( new Jdk8Module ( ) )
. registerModule ( new JavaTimeModule ( ) ) ;
objectMapper. setVisibility ( PropertyAccessor. ALL, JsonAutoDetect. Visibility. ANY) ;
objectMapper. enableDefaultTyping ( ObjectMapper. DefaultTyping. NON_FINAL) ;
serializer. setObjectMapper ( objectMapper) ;
RedisTemplate< String, Object> redisTemplate = new RedisTemplate < > ( ) ;
redisTemplate. setConnectionFactory ( redisConnectionFactory) ;
redisTemplate. setKeySerializer ( new StringRedisSerializer ( ) ) ;
redisTemplate. setValueSerializer ( serializer) ;
redisTemplate. setHashKeySerializer ( new StringRedisSerializer ( ) ) ;
redisTemplate. setHashValueSerializer ( serializer) ;
redisTemplate. afterPropertiesSet ( ) ;
return redisTemplate;
}
}