【发布时间】:2016-06-01 17:45:22
【问题描述】:
根据this answer,一个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() 也不起作用,因为它抱怨找不到连接工厂。
我知道这个请求可能与在 Spring 应用程序中定义另一个 bean 没有太大区别,但不确定当前的 Spring-Data-Redis 集成对我来说最好的方法是什么。请帮忙,谢谢。
【问题讨论】:
标签: spring-boot spring-data-redis