다중 서버환경에서 로그인정보와 같은 데이터를 여러 was가 공유하려면 세션정보가 필요합니다.
Spring boot 환경에서 session 을 저장하는 방법에대해 알아보겠습니다.
HttpSession을 사용할 때 Redis를 활용하여 웹 애플리케이션의 데이터를 저장할 수 있습니다.
1. 의존성을 추가해야 합니다.
Spring Session 사용하기전에 종속성을 추가해야합니다추가해야 합니다.
pom.xml에
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
를 추가합니다.
spring boot에서는 의존성 버전을 명시하지 않아도 알맞은 버전을 찾아 넣습니다.
2. 스프링 부트 설정을 해야 합니다.
redis가 지원하는 spring session을 설정합니다.
application.properties에
spring.session.store-type = redis
를 추가합니다.
spring boot는 @EnableRedisHttpSession 어노테이션을 수동으로 추가하는 것과 동일한 적용을 합니다. 이것은 springSessionRepositoryFilter 구현하는 이름을 가진 Spring bean을 만듭니다. Filter, 필터는 HttpSession Spring Session에서 지원할 구현을 대체하는 역할을 합니다.
application.properties에 아래와같이 추가하여 해당 내용을 정의합니다.
server.servlet.session.timeout = # 세션 시간 초과. 기간 접미사가 지정되지 않으면 초가 사용됩니다.
spring.session.redis.flush-mode = on_save # 세션 플러시 모드.
spring.session.redis.namespace = spring : session # 세션 저장에 사용되는 키의 네임 스페이스.
*spring Session이란 서블릿 웹 애플리케이션을 빌드 할떄 springboot가 spring session을 자동구성합니다.
- Redis
- MongoDB
- JDBC
단일 스프링 세션 모듈이 클래스 경로에 존재한다면 스프링 부트는 해당 저장소 구현을 자동으로 사용합니다. 둘 이상의 구현이 있는경우 (StoreType) 세션 저장에 사용할 것을 선택해야합니다선택해야 합니다.
예를 들자면, JDBC를 백엔드 저장소로 상요하기위해 서는
spring.session.store-type=jdbc 로 정할 수 있습니다.
spring.session.jdbc.table-name=SESSIONS 으로 테이블명을 설정할 수 있습니다.
'used-market-server Project' 카테고리의 다른 글
Nodejs, Redis 가 단일 쓰레드인 이유는? (0) | 2020.08.11 |
---|---|
서블릿 컨테이너 톰캣의 session 저장 방식 (0) | 2020.07.24 |
Redis와 memcached 비교 (0) | 2020.06.28 |
세션 클러스터링 이란? (0) | 2020.06.25 |
웹서버 , WAS 비교 (0) | 2020.06.20 |