스프링 세션 (Spring Session) 이란?
- 스프링 프레임워크에서 제공하는 모듈 중 하나로 기존의 HttpSession 을 대체한다.
- 분산된 스케일링 가능한 환경에서 세션 데이터를 관리한다.
- 외부 저장소를 사용하게끔 하여 서블릿 컨테이너에서 세션 데이터를 분리할 수 있도록 도와준다.
- Redis, JDBC, Hazelcast
- 애플리케이션 퍼포먼스 향상과 분산 환경에서 세션 관리가 쉬워진다는 장점이 생긴다.
스프링 세션은 어떻게 작동하는가?
의존성 설정
- 스프링 세션을 이용하기 위해서는 의존성을 먼저 설정해야 한다.
spring-session-data-redis
의존성을 추가해주면 된다.
구성정보 설정
- 스프링 세션을 사용하기 위해 필요한 구성정보를 설정해야 한다.
@Configuration
클래스에@EnableSpringHttpSession
애노테이션을 적용해 스프링 세션을 활성화한다.- 세션 영속화를 위한
SessionRepository
빈을 제공한다.Redis
,JDBC
,Hazelcast
등 다양한 것들이 이용될 수 있다.
- 원한다면 세션 타임아웃 시간 등을 설정한다.
HttpSession 대체
- 스프링 세션이 설정되면 서블릿 컨테이너에 의해 제공되던 HttpSession 구현이 스프링 세션으로 대체된다.
- 스프링 세션은
HttpSession
인터페이스의 자체적 구현을 제공하며SessionRepository
에 의해 구성된다. - 어떠한 변화사항 없이도 서블릿과 필터는 여전히
HttpSession
API 를 동일하게 이용할 수 있다.
세션 ID 관리
- 스프링 세션은 커스텀
HttpSessionIdResolver
구현을 통해 세션 ID 를 관리한다. - 기본적으로 서블릿 컨테이너와 동일하게
JSESSIONID
쿠키를 사용한다. - 원한다면 사용자 정의 이름을 이용해 쿠키의 이름을 변경할 수 있다.
- 혹은 커스텀한 HTTP 헤더를 사용하도록 변경할 수도 있다.
분산된 세션 관리 (Distributed session management)
- 스프링 세션은 외부 데이터 저장소를 이용해 세션을 관리하기 때문에 분산된 애플리케이션에서도 잘 동작한다.
- 특히 클라우드 환경에서 여러 인스턴스를 이용해 로드밸런싱을 하는 경우 효율적이다.
반응형
'프레임워크 > 스프링 프레임워크' 카테고리의 다른 글
자바 애노테이션으로 빈을 구성하는게 XML 로 구성하는 것 보다 나은 이유 (0) | 2023.04.21 |
---|---|
<context:annotation-config> 태그란? (스프링 빈 설정 xml) (0) | 2023.04.21 |
스프링 레디스 세션 사용법 (0) | 2023.04.19 |
스프링 레디스 세션 적용법 (0) | 2023.04.19 |
@EnableRedisHttpSession 은 어떻게 동작하는가? (feat. 스프링 세션에 레디스 활용하기) (0) | 2023.04.19 |