spring - Spring Session 不使用自定义 RedisTemplate bean
问题描述
尝试将 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 似乎对 hashValues 使用默认的 JdkSerializationRedisSerializer,而不是所需的 GenericJackson2JsonRedisSerializer。
删除extends AbstractHttpSessionApplicationInitializer
似乎使 Spring 使用正确的 RedisTempplate bean,但是 Spring Session 根本没有连接。
使用 Spring Session 1.3.3 和 spring-boot-starter-data -redis 1.5.13。
知道我错过了什么吗?
解决方案
你只需要像这样覆盖春季会话的默认 RedisSerializer
@Configuration public class RedisConfig {
@Bean(name="springSessionDefaultRedisSerializer")
public RedisSerializer serializer() {
return new GenericJackson2JsonRedisSerializer();
}
推荐阅读
- javascript - 带有 sup 和子文本的按钮不会单击
- python - python2 .x 到 python 3.x:“float”和“NoneType”的实例之间不支持“>”
- python - 是否可以为相关图中的每个数据点添加标签?
- java - Spring 在使用 MethodValidationPostProcessor 时返回 404
- mysql - 使用 unix_socket 登录 MySQL 帐户
- node.js - Discord.JS-Commando Discord Bot 中的 TypeError
- python - 我的代码中出现 KeyError: ' ' 但我不明白为什么
- mongodb - MongoDB 集群/水平扩展是免费的吗?
- javascript - 为什么 DOM document.createElement() 不起作用?
- ios - 在另一个之后添加一个 UITableView 单元格