当前位置 博文首页 > 无限迭代中......:Spring Session Redis——自定义JSON序列化解
Spring Session + Redis——自定义JSON序列化解决方案
RedisHttpSessionConfiguration中,Bean名称必须是springSessionDefaultRedisSerializer才能指定Jackson序列化器。
@Autowired(required = false)
@Qualifier("springSessionDefaultRedisSerializer")
public void setDefaultRedisSerializer(
RedisSerializer<Object> defaultRedisSerializer) {
this.defaultRedisSerializer = defaultRedisSerializer;
}
使用指定Bean的名称springSessionDefaultRedisSerializer。?由于必须在Jackson的ObjectMapper中序列化会话信息,因此可以使用SecurityJackson2Modules注册所需的模块。
@Bean
public ObjectMapper objectMapper(){
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModules(SecurityJackson2Modules.getModules(getClass().getClassLoader()));
return objectMapper;
}
@Autowired
private ObjectMapper objectMapper;
@Bean
public RedisSerializer<Object> redisSerializer(){
return new GenericJackson2JsonRedisSerializer(objectMapper);
}
@Bean
public RedisSerializer<Object> springSessionDefaultRedisSerializer(){
return redisSerializer;
}
?以上代码可以化简:
@Bean public RedisSerializer<Object> springSessionDefaultRedisSerializer(){ ObjectMapper objectMapper = new ObjectMapper(); objectMapper.registerModules(SecurityJackson2Modules.getModules(getClass().getClassLoader())); return new GenericJackson2JsonRedisSerializer(objectMapper); }
也可以用@Qualifier("springSessionDefaultRedisSerializer")
?
参考文章
Spring Session & RedisでJacksonを使ったシリアライズを試してみる
cs