不确定要使用什么Redis序列化器。
我已经尝试了GenericJackson2JsonRedisSerializer和Jackson2JsonRedisSerializer序列化器来缓存诸如PagedResources>之类的类。我可以使用Jackson2JsonRedisSerializer来缓存它们,但是在从缓存中获取它时会出错。我曾尝试在Jackson2JsonRedisSerializer中设置ProductInfo.class,Resource.class和PagedResources.class,但没有任何效果。
@Bean
public JedisConnectionFactory redisConnectionFactory() {
JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory();
jedisConnectionFactory.setUsePool(true);
return jedisConnectionFactory;
}
@Bean
public RedisSerializer<String> redisStringSerializer() {
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
return stringRedisSerializer;
}
当我尝试这样做时,我能够缓存时出错,但是尝试获取数据时出错。我得到:调用产品服务时出错:java.util.LinkedHashMap无法转换为org.springframework.hateoas。资源
@Bean(name="redisTemplate")
public RedisTemplate<String, PagedResources> redisTemplate(RedisConnectionFactory connectionFactory, RedisSerializer<String> redisSerializer) {
RedisTemplate<String, PagedResources> redisTemplate = new RedisTemplate<String, PagedResources>();
redisTemplate.setConnectionFactory(connectionFactory);
redisTemplate.setKeySerializer(redisSerializer);
redisTemplate.setHashKeySerializer(redisSerializer);
Jackson2JsonRedisSerializer<PagedResources> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(PagedResources.class);
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
return redisTemplate;
}
@Bean
@Primary
public CacheManager productsRedisCacheManager() {
RedisCacheManager manager = new RedisCacheManager(redisTemplate(redisConnectionFactory(), redisStringSerializer()));
return manager;
}
当我尝试 Jackson2JsonRedisSerializer jackson2JsonRedisSerializer =新的Jackson2JsonRedisSerializer <>(ProductInfo.class);
我收到无法识别的字段错误。
当我尝试 redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer()); redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
我明白了
调用产品服务时发生错误:无法编写JSON:未包装的属性需要使用类型信息:在不禁用SerializationFeature.FAIL_ON_UNWRAPPED_TYPE_IDENTIFIERS
的情况下无法序列化(通过引用链:org.springframework.hateoas.PagedResources [“ content”]-> java。 util.Collections $ UnmodifiableCollection [0]-> org.springframework.hateoas.Resource [“ content”]);