Session : 클라이언트와 서버 간 상호작용을 하기 위해 유지되는 상태 데이터를 의미, 이전 요청에서 생성된 데이터를 다음 요청에서 활용하기 위해 사용

1. Spring Session

웹 애플리케이션의 세션 관리를 위한 인터페이스와 세션 저장소를 제공한다.

세션의 종류

  1. HTTP Session
  2. WebSocket
  3. WebSession

스프링 세션과 연동 가능한 기능

  1. Redis
  2. JDBC
  3. Hazelcast
  4. MongoDB

1.1. 의존성 추가

// Maven
<dependencies>
	<dependency>
		<groupId>org.springframework.session</groupId>
		<artifactId>spring-session-core</artifactId>
		<version>{version}</version>
	</dependency>
</dependencies>
// gradle
implementation 'org.springframework.session:spring-session-core'

1.2. application.yaml

spring:
	data:
		redis:
			host: 127.0.0.1
			port: 6379
	session:
		store-type: redis

1.3. 사용 예시

@GetMapping("/")
public Map<String, String> home(HttpSession session) {
	Integer visitCount = (Integer) session.getAttribute("visits");
	if(visitCount == null)
		visitCount = 0;

	session.setAttribute("visits", ++visitCount);
	return Map.of("session id", session.getId(), "visits", visitCount.toString());
}