Имах същия проблем. Можете да създадете общ bean за това и да използвате GenricJackson2JsonRedisSerializer. Проблемът е, че чрез използването на това json ще бъде запазен с някои допълнителни данни, за да работи десериализацията по-късно.
Друг начин би бил да се използва Jackson2JsonRedisSerializer, но той се нуждае от екземпляр на Class от генеричния тип, за да работи, но не можах да разбера как да го получа.
@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;
}
Използване на кеш клас:
@Autowired
@Qualifier("objectRedisTemplate")
private RedisTemplate<String, MyTypeA> redisTemplate;