Согласно этому ответу, один RedisTemplate
не может поддерживать несколько сериализаторов для значений. Поэтому я хочу создать несколько RedisTemplates для разных нужд, в частности, один для строковых действий и один для сериализации объектов в JSON, которые будут использоваться в RedisCacheManager
. Я использую Spring Boot, и текущий RedisTemplate
подключается автоматически, мне интересно, как правильно объявить второй экземпляр RedisTemplate
, использующий ту же фабрику соединений Jedis, но имеющий свои собственные сериализаторы?
Пробовал что-то подобное в двух разных компонентах,
Компонент 1 объявляет,
@Autowired
private RedisTemplate redisTemplate;
redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer(Instance.class));
Компонент 2 объявляет,
@Autowired
private StringRedisTemplate stringRedisTemplate;
В этом случае два шаблона на самом деле одинаковы. Проследил код Spring и обнаружил, что шаблон компонента 1 был преобразован в автоматически сконфигурированный stringRedisTemplate
.
Ручной вызов конструктора RedisTemplate
, а затем его afterPropertiesSet()
тоже не будет работать, так как он жалуется, что невозможно найти фабрику соединений.
Я знаю, что этот запрос, вероятно, не сильно отличается от определения другого bean-компонента в приложении Spring, но не уверен, что с текущей интеграцией Spring-Data-Redis мне лучше всего это сделать. Пожалуйста, помогите, спасибо.