Spring会话未使用自定义模板bean

Spring会话未使用自定义模板bean,spring,spring-boot,spring-security,redis,spring-session,Spring,Spring Boot,Spring Security,Redis,Spring Session,尝试将RedisTemplatebean与GenericJackson2JsonRedisSerializer一起使用,但在调试时,我注意到Spring会话使用了不同的RedisTemplate实例 @Configuration @EnableRedisHttpSession public class RedisHttpSessionConfig extends AbstractHttpSessionApplicationInitializer { @Bean pub

尝试将RedisTemplatebean与GenericJackson2JsonRedisSerializer一起使用,但在调试时,我注意到Spring会话使用了不同的RedisTemplate实例

@Configuration
@EnableRedisHttpSession
public class RedisHttpSessionConfig extends 
    AbstractHttpSessionApplicationInitializer {

    @Bean
    public JedisConnectionFactory jedisConnectionFactory() {
        return new JedisConnectionFactory();
    }

    @Bean
    public RedisTemplate<Object, Object> redisTemplate() {
        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;
    }

    @Bean
    public HttpSessionEventPublisher httpSessionEventPublisher() {
        return new HttpSessionEventPublisher();
    }
@配置
@启用RedistpSession
公共类RedisHttpSessionConfig扩展
AbstractHttpSessionApplicationInitializer{
@豆子
公共绝地连接工厂绝地连接工厂(){
返回新的JedisConnectionFactory();
}
@豆子
公共RedisTemplate RedisTemplate(){
最终RedisTemplate=新RedisTemplate();
setKeySerializer(新的StringRedisSerializer());
setHashKeySerializer(新的StringRedisSerializer());
setValueSerializer(新的GenericJackson2JsonRedisSerializer());
setHashValueSerializer(新的GenericJackson2JsonRedisSerializer());
setConnectionFactory(jedisConnectionFactory());
返回模板;
}
@豆子
公共HttpSessionEventPublisher HttpSessionEventPublisher(){
返回新的HttpSessionEventPublisher();
}
在运行此程序时,Spring会话似乎对HashValue使用默认的JdkSerializationRedisSerializer,而不是所需的GenericJackson2JsonRedisSerializer

删除
扩展AbstractHttpSessionApplicationInitializer
似乎使Spring使用正确的RedistemPlate bean,但Spring会话根本没有连接

使用Spring会话1.3.3和Spring引导启动器数据 -redis 1.5.13


你知道我缺少什么吗?

你需要配置并注册一个名为
sessionRedisTemplate
的RedisTemplate bean。这将覆盖
RedistpSessionConfiguration
提供的默认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;
}
@Bean
公共RedisTemplate sessionRedisTemplate(){
最终RedisTemplate=新RedisTemplate();
setKeySerializer(新的StringRedisSerializer());
setHashKeySerializer(新的StringRedisSerializer());
setValueSerializer(新的GenericJackson2JsonRedisSerializer());
setHashValueSerializer(新的GenericJackson2JsonRedisSerializer());
setConnectionFactory(jedisConnectionFactory());
返回模板;
}

您需要配置并注册名为
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;
}
@Bean
公共RedisTemplate sessionRedisTemplate(){
最终RedisTemplate=新RedisTemplate();
setKeySerializer(新的StringRedisSerializer());
setHashKeySerializer(新的StringRedisSerializer());
setValueSerializer(新的GenericJackson2JsonRedisSerializer());
setHashValueSerializer(新的GenericJackson2JsonRedisSerializer());
setConnectionFactory(jedisConnectionFactory());
返回模板;
}

您只需要像这样覆盖spring会话的默认重新序列化程序

@Configuration public class RedisConfig {

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

您只需要像这样覆盖spring会话的默认重新序列化程序

@Configuration public class RedisConfig {

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