Spring Session不使用自定义RedisTemplate bean

时间:2018-11-28 08:12:13

标签: spring spring-boot spring-security redis spring-session

试图将RedisTemplate bean与GenericJackson2JsonRedisSerializer一起使用,但是在调试时我注意到Spring Session使用了不同的RedisTemplate实例。

undefined

运行此命令时,Spring Session似乎对哈希值使用默认的JdkSerializationRedisSerializer,而不是所需的GenericJackson2JsonRedisSerializer。

删除console.log(variable1);似乎使Spring使用了正确的RedisTempplate bean,但随后Spring Session根本没有连接。

使用Spring Session 1.3.3和spring-boot-starter-data -redis 1.5.13。

知道我缺少什么吗?

2 个答案:

答案 0 :(得分:0)

您需要配置和注册名为sessionRedisTemplate的RedisTemplate bean。这将覆盖RedisHttpSessionConfiguration提供的默认RedisTemplate实例。

您应将其配置为:

@Bean
public RedisTemplate<Object, Object> sessionRedisTemplate() {
    final RedisTemplate<Object, Object> template = new RedisTemplate<>();
    template.setKeySerializer(new StringRedisSerializer());
    template.setHashKeySerializer(new StringRedisSerializer());

    template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
    template.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
    template.setConnectionFactory(jedisConnectionFactory());
    return template;
}

答案 1 :(得分:0)

您只需要为春季会话覆盖默认的RedisSerializer

@Configuration public class RedisConfig {

@Bean(name="springSessionDefaultRedisSerializer")
public RedisSerializer serializer() {
    return new GenericJackson2JsonRedisSerializer();
}