#redis
#redis
Вопрос:
Я пытаюсь использовать Redis в приложении spring boot для сеанса, добавляя зависимости, такие как:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>1.5.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session</artifactId>
<version>1.3.3.RELEASE</version>
</dependency>
И код для Redis похож:
package com.dci.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import
org.springframework.data.redis.serializer.GenericToStringSerializer;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
import org.springframework.session.web.context.AbstractHttpSessionApplicationInitializer;
@Configuration
@ComponentScan("com.dci")
@EnableRedisHttpSession
public class RedisConfig extends AbstractHttpSessionApplicationInitializer {
@Bean
JedisConnectionFactory jedisConnectionFactory() {
JedisConnectionFactory factory = new JedisConnectionFactory();
return factory;
}
@Bean
public RedisTemplate<String, Object> redisTemplate() {
final RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
template.setConnectionFactory(jedisConnectionFactory());
template.setValueSerializer(new GenericToStringSerializer<Object>(Object.class));
return template;
}
}
Комментарии:
1. Отформатировал код
2. У меня такая же проблема. Вы нашли решение?
Ответ №1:
Компоненты JedisConnectionFactory и RedisTemplate не нужны при загрузке Spring, но в вашем файле «Spring Security Config» добавьте:
@Bean
public HttpSessionStrategy httpSessionStrategy() {
return new HeaderHttpSessionStrategy();
}
В pom добавьте следующие зависимости:
<! - Spring Session ->
<Dependency>
<GroupId> org.springframework.session </ groupId>
<ArtifactId> spring-session </ artifactId>
<Version> 1.3.5.RELEASE </ version>
</ Dependency>
<! - redis server ->
<Dependency>
<GroupId> org.springframework.data </ groupId>
<ArtifactId> spring-data-redis </ artifactId>
</ Dependency>
<Dependency>
<GroupId> redis.clients </ groupId>
<ArtifactId> Jedis </ artifactId>
</ Dependency>
В вашем файле конфигурации (es. application.properties) добавьте:
spring.session.store-type = нет
Spring Boot сделает все остальное.