Ik had hetzelfde probleem. U kunt hiervoor een generieke bean maken en de GenricJackson2JsonRedisSerializer gebruiken. Het probleem is dat door dit te gebruiken de json wordt opgeslagen met wat extra gegevens zodat de deserialisatie later kan werken.
Een andere manier zou zijn om de Jackson2JsonRedisSerializer te gebruiken, maar deze heeft de Class-instantie van het generieke type nodig om te werken, waarvan ik niet kon achterhalen hoe ik deze moest krijgen.
@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;
}
Gebruik op cacheklasse:
@Autowired
@Qualifier("objectRedisTemplate")
private RedisTemplate<String, MyTypeA> redisTemplate;