" async="async">
', {
cookie_domain: 'auto',
cookie_flags: 'max-age=0;domain=.tistory.com',
cookie_expires: 7 * 24 * 60 * 60 // 7 days, in seconds
});
스프링 세션 (Spring Session) 이란 무엇이고 어떻게 작동할까? — 제이크서 개발 블로그
스프링 세션 (Spring Session) 이란?
- 스프링 프레임워크에서 제공하는 모듈 중 하나로 기존의 HttpSession 을 대체한다.
- 분산된 스케일링 가능한 환경에서 세션 데이터를 관리한다.
- 외부 저장소를 사용하게끔 하여 서블릿 컨테이너에서 세션 데이터를 분리할 수 있도록 도와준다.
- 애플리케이션 퍼포먼스 향상과 분산 환경에서 세션 관리가 쉬워진다는 장점이 생긴다.
스프링 세션은 어떻게 작동하는가?
의존성 설정
- 스프링 세션을 이용하기 위해서는 의존성을 먼저 설정해야 한다.
spring-session-data-redis 의존성을 추가해주면 된다.
구성정보 설정
- 스프링 세션을 사용하기 위해 필요한 구성정보를 설정해야 한다.
@Configuration 클래스에 @EnableSpringHttpSession 애노테이션을 적용해 스프링 세션을 활성화한다.
- 세션 영속화를 위한
SessionRepository 빈을 제공한다.
Redis, JDBC, Hazelcast 등 다양한 것들이 이용될 수 있다.
- 원한다면 세션 타임아웃 시간 등을 설정한다.
HttpSession 대체
- 스프링 세션이 설정되면 서블릿 컨테이너에 의해 제공되던 HttpSession 구현이 스프링 세션으로 대체된다.
- 스프링 세션은
HttpSession 인터페이스의 자체적 구현을 제공하며 SessionRepository 에 의해 구성된다.
- 어떠한 변화사항 없이도 서블릿과 필터는 여전히
HttpSession API 를 동일하게 이용할 수 있다.
세션 ID 관리
- 스프링 세션은 커스텀
HttpSessionIdResolver 구현을 통해 세션 ID 를 관리한다.
- 기본적으로 서블릿 컨테이너와 동일하게
JSESSIONID 쿠키를 사용한다.
- 원한다면 사용자 정의 이름을 이용해 쿠키의 이름을 변경할 수 있다.
- 혹은 커스텀한 HTTP 헤더를 사용하도록 변경할 수도 있다.
분산된 세션 관리 (Distributed session management)
- 스프링 세션은 외부 데이터 저장소를 이용해 세션을 관리하기 때문에 분산된 애플리케이션에서도 잘 동작한다.
- 특히 클라우드 환경에서 여러 인스턴스를 이용해 로드밸런싱을 하는 경우 효율적이다.