Ich hatte das gleiche Problem. Sie könnten dafür eine generische Bean erstellen und den GenricJackson2JsonRedisSerializer verwenden. Das Problem ist, dass dadurch der JSON mit einigen zusätzlichen Daten gespeichert wird, damit die Deserialisierung später funktioniert.
Eine andere Möglichkeit wäre, den Jackson2JsonRedisSerializer zu verwenden, aber er benötigt die Klasseninstanz des generischen Typs, um zu funktionieren, was ich nicht herausfinden konnte.
@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;
}
Verwendung in der Cache-Klasse:
@Autowired
@Qualifier("objectRedisTemplate")
private RedisTemplate<String, MyTypeA> redisTemplate;