Jeg havde samme problem. Du kan oprette en generisk bønne til dette og bruge GenricJackson2JsonRedisSerializer. Problemet er, at ved at bruge dette vil json blive gemt med nogle ekstra data, så deserialiseringen kan fungere senere.
En anden måde ville være at bruge Jackson2JsonRedisSerializer, men den har brug for Class-forekomsten af den generiske type for at fungere, hvilket jeg ikke kunne finde ud af, hvordan man får.
@Bean("objectRedisTemplate")
public <T> RedisTemplate<String, T> objectRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, T> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
RedisSerializer<String> serializer = new StringRedisSerializer();
redisTemplate.setKeySerializer(serializer);
redisTemplate.setHashKeySerializer(serializer);
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
return redisTemplate;
}
Brug på cacheklasse:
@Autowired
@Qualifier("objectRedisTemplate")
private RedisTemplate<String, MyTypeA> redisTemplate;