gpt4 book ai didi

Spring Session 不使用自定义 RedisTemplate bean

转载 作者:可可西里 更新时间:2023-11-01 11:24:03 25 4
gpt4 key购买 nike

尝试将 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com