스프링 부트에서 레디스 세션 적용하는 방법
레디스 연결정보 설정
application.properties
혹은application.yml
에 Redis hostname, port, password 등을 입력해주면 된다.
@Configuration
빈 생성
@Configuration
@EnableRedisHttpSession
public class SessionConfig {
}
스프링 부트가 아닌 환경에서 레디스 세션 적용하는 방법
- 애노테이션을 이용한
@Configuration
빈을 등록하는 방식으로도 가능하고 순수한 XML 파일 작성으로도 가능하다.
의존성 추가
spring-session-data-redis
spring-data-redis
- Jedis 나 Lettuce 와 같은 Redis Client library
Configuration Class 만들기
@Configuration
@EnableRedisHttpSession
public class SessionConfig {
@Bean
public RedisConnectionFactory redisConnectionFactory() {
// Use Jedis or Lettuce as the Redis client
JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory();
jedisConnectionFactory.setHostName("localhost");
jedisConnectionFactory.setPort(6379);
return jedisConnectionFactory;
}
@Bean
public RedisTemplate<String, Object> redisTemplate() {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory());
return redisTemplate;
}
}
스프링 XML 파일에 Configuration 파일 등록하기
@Configuration
클래스가 컴포넌트 스캔에 확실하게 걸리도록 해주어야 한다.
<beans ...>
<context:annotation-config/>
<import resource="classpath:/path/to/SessionConfig.class"/>
</beans>
web.xml
업데이트하기
web.xml
에SpringSessionRepositoryFilter
를 등록해주어야 한다.
<filter>
<filter-name>springSessionRepositoryFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSessionRepositoryFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
번외: XML 로만 설정하는 방법
- 스프링 빈을 선언하는 곳에 아래의 빈을 선언한다.
<bean class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration"/>
<bean name="lettuceConnectionFactory" id="lettuceConnectionFactory"
class="org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory" destroy-method="destroy">
<property name="hostName" value="${REDIS.connection.serverIp}"/>
<property name="port" value="${REDIS.connection.port}"/>
<property name="database" value="0"/>
<property name="password" value="${REDIS.connection.passwd}"/>
</bean>
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
<property name="connectionFactory" ref="lettuceConnectionFactory"/>
</bean>
<util:constant static-field="org.springframework.session.data.redis.config.ConfigureRedisAction.NO_OP"/>
web.xml
파일에 아래의 필터를 적용한다.
<filter>
<filter-name>springSessionRepositoryFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSessionRepositoryFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
스프링 레디스 세션 동작방식과 사용법
반응형
'프레임워크 > 스프링 프레임워크' 카테고리의 다른 글
스프링 세션 (Spring Session) 이란 무엇이고 어떻게 작동할까? (0) | 2023.04.20 |
---|---|
스프링 레디스 세션 사용법 (0) | 2023.04.19 |
@EnableRedisHttpSession 은 어떻게 동작하는가? (feat. 스프링 세션에 레디스 활용하기) (0) | 2023.04.19 |
RedirectAttributes 란? (feat. addFlashAttribute 에 대한 설명 포함) (0) | 2023.04.17 |
스프링 프레임워크 버전 4.2에서 4.3 업그레이드시 변화사항 (0) | 2023.03.23 |