Spring会话未使用自定义模板bean
尝试将RedisTemplatebean与GenericJackson2JsonRedisSerializer一起使用,但在调试时,我注意到Spring会话使用了不同的RedisTemplate实例Spring会话未使用自定义模板bean,spring,spring-boot,spring-security,redis,spring-session,Spring,Spring Boot,Spring Security,Redis,Spring Session,尝试将RedisTemplatebean与GenericJackson2JsonRedisSerializer一起使用,但在调试时,我注意到Spring会话使用了不同的RedisTemplate实例 @Configuration @EnableRedisHttpSession public class RedisHttpSessionConfig extends AbstractHttpSessionApplicationInitializer { @Bean pub
@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();
}
@配置
@启用RedistpSession
公共类RedisHttpSessionConfig扩展
AbstractHttpSessionApplicationInitializer{
@豆子
公共绝地连接工厂绝地连接工厂(){
返回新的JedisConnectionFactory();
}
@豆子
公共RedisTemplate RedisTemplate(){
最终RedisTemplate=新RedisTemplate();
setKeySerializer(新的StringRedisSerializer());
setHashKeySerializer(新的StringRedisSerializer());
setValueSerializer(新的GenericJackson2JsonRedisSerializer());
setHashValueSerializer(新的GenericJackson2JsonRedisSerializer());
setConnectionFactory(jedisConnectionFactory());
返回模板;
}
@豆子
公共HttpSessionEventPublisher HttpSessionEventPublisher(){
返回新的HttpSessionEventPublisher();
}
在运行此程序时,Spring会话似乎对HashValue使用默认的JdkSerializationRedisSerializer,而不是所需的GenericJackson2JsonRedisSerializer
删除扩展AbstractHttpSessionApplicationInitializer
似乎使Spring使用正确的RedistemPlate bean,但Spring会话根本没有连接
使用Spring会话1.3.3和Spring引导启动器数据
-redis 1.5.13
你知道我缺少什么吗?你需要配置并注册一个名为
sessionRedisTemplate
的RedisTemplate bean。这将覆盖RedistpSessionConfiguration
提供的默认RedisTemplate实例
您应该将其配置为:
@Bean
public RedisTemplate<Object, Object> sessionRedisTemplate() {
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
公共RedisTemplate sessionRedisTemplate(){
最终RedisTemplate=新RedisTemplate();
setKeySerializer(新的StringRedisSerializer());
setHashKeySerializer(新的StringRedisSerializer());
setValueSerializer(新的GenericJackson2JsonRedisSerializer());
setHashValueSerializer(新的GenericJackson2JsonRedisSerializer());
setConnectionFactory(jedisConnectionFactory());
返回模板;
}
您需要配置并注册名为sessionRedisTemplate
的RedisTemplate bean。这将覆盖由RedisHttpSessionConfiguration
提供的默认RedisTemplate实例
您应该将其配置为:
@Bean
public RedisTemplate<Object, Object> sessionRedisTemplate() {
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
公共RedisTemplate sessionRedisTemplate(){
最终RedisTemplate=新RedisTemplate();
setKeySerializer(新的StringRedisSerializer());
setHashKeySerializer(新的StringRedisSerializer());
setValueSerializer(新的GenericJackson2JsonRedisSerializer());
setHashValueSerializer(新的GenericJackson2JsonRedisSerializer());
setConnectionFactory(jedisConnectionFactory());
返回模板;
}
您只需要像这样覆盖spring会话的默认重新序列化程序
@Configuration public class RedisConfig {
@Bean(name="springSessionDefaultRedisSerializer")
public RedisSerializer serializer() {
return new GenericJackson2JsonRedisSerializer();
}
您只需要像这样覆盖spring会话的默认重新序列化程序
@Configuration public class RedisConfig {
@Bean(name="springSessionDefaultRedisSerializer")
public RedisSerializer serializer() {
return new GenericJackson2JsonRedisSerializer();
}