当前位置: 首页 > 知识库问答 >
问题:

Spring会话不使用自定义RedisTemplate bean

宗政斌
2023-03-14

试图将RedisTemplate bean与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();
    }

当运行这个时,Spring会话似乎对hashValues使用默认的JdkSerializationRedisSerializer,而不是所需的GenericJackson2JSONRedisSerializer。

你知道我错过了什么吗?

共有1个答案

邵飞白
2023-03-14

您只需要重写spring会话的默认RedisSerializer,如下所示

@Configuration public class RedisConfig {

@Bean(name="springSessionDefaultRedisSerializer")
public RedisSerializer serializer() {
    return new GenericJackson2JsonRedisSerializer();
}
 类似资料:
  • null 有人知道解决这个问题的办法吗?提前感谢! 迈克尔

  • 我有一个简单的中间件,它检查用户会话中是否有密钥。 问题是我总是得到“未按请求设置会话存储”错误这是我的路线: 我在app\Http\K中添加了中间件ernel.php变量$middleware 我也试着改变我的路线: 但这不起作用。知道如何确保会话已经启动,或者在调用中间件之前启动它吗?我用的是Laravel 5.3

  • 问题内容: 我想使用Redis进行会话管理。 但是我不知道将Redis用作Gorilla会话程序包的自定义后端比直接使用Redis有什么好处? 链接到大猩猩会议软件包:http : //www.gorillatoolkit.org/pkg/sessions 问题答案: 大猩猩会话提供了一种连接存储系统以进行会话管理的方法,只要您遵循提供的界面即可。目前,他们为您提供了两个开箱即用的商店。其中一个是

  • 问题内容: 我在Spring 4 MVC + Security + Boot项目中设置了一个自定义身份验证过滤器。过滤器可以很好地完成工作,现在我想禁用某些URI(例如)的安全性。这是我的配置 不幸的是,当我在/ api / …下调用resource时,过滤器仍然被链接。我在过滤器中添加了println,并在每次调用时将其写入控制台。你知道我的配置有什么问题吗? 更新 过滤器代码: 问题答案: 删

  • 问题内容: 我正在尝试在我的Express应用程序中使用redis进行会话。 我执行以下操作: 稍后,在我的应用程序中,如果执行以下操作: 我得到: 无法读取未定义的属性“ someProperty” 这表明req.session是未定义的 (我可以从config部分的console.log条目中看到) 我肯定有redis运行,并且可以看到我的应用最初连接到它(使用redis-cli监视器) 问题

  • 问题内容: 我已经如下设置了web.xml。我还有一个基于注释的控制器,该控制器可以采用任何URL模式,然后转到相应的jsp(我已在-servlet.xml中进行了设置)。但是,如果转到以.html结尾的页面(并且其jsp不存在),则看不到自定义404页面(并且在日志中看到以下错误)。任何不以.html结尾的页面,我都可以看到自定义404页面。 如何为通过DispatcherServlet的任何页