Spring Session 不使用自定义 RedisTemplate bean

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

尝试将 RedisTemplate bean 与 GenericJackson2JsonRedisSerializer 一起使用,但在调试时我注意到 Spring Session 使用了不同的 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();
    }

运行此程序时,Spring Session 似乎使用默认的 JdkSerializationRedisSerializer 作为哈希值,而不是所需的 GenericJackson2JsonRedisSerializer。

删除 extends AbstractHttpSessionApplicationInitializer 似乎让 Spring 使用了正确的 RedisTemplate bean,但是 Spring Session 根本没有连接。

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

知道我错过了什么吗?

最佳答案

你只需要像这样为 spring session 覆盖默认的 RedisSerializer

@Configuration public class RedisConfig {

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

关于Spring Session 不使用自定义 RedisTemplate bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53514859/

相关文章:

java - Spring + hibernate + JPA

grails - 从主页重定向到Grails中的另一个 Controller

java - 身份验证在 Spring 中不起作用

用于使用 Facebook token 进行身份验证的无状态 REST 端点的 Spring 社交身份验证过滤器

更改 build.gradle 时出现 java.lang.ClassNotFoundException : javax. persistence.EntityManagerFactory

java - Spring boot Thymeleaf 根据其他下拉列表选择填充下拉列表

java - 如何解决这个: Exception encountered during context initialization - cancelling refresh attempt?

java - 自从更改 SpringBoot 依赖性以来,在空字段上加入时出现 Freemarker 错误

azure - 在 Azure 应用服务中部署的 Spring Boot Web 应用中配置 SQL 连接池

java - 创建主题失败”,"exception":"\norg. apache.kafka.common.errors.UnsupportedVersionException