본문 바로가기

SpringFramework Core - I. IoC 컨테이너/5. Bean Scopes

5.4.3. 세션 Scope

원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-factory-scopes-session

 

 

다음 bean 정의에 대한 XML 설정을 보자.

<bean id="userPreferences" class="com.something.UserPreferences" scope="session" />

스프링 컨테이너는 단일한 HTTP 세션의 라이프타임을 위한 새로운 UserPreferences bean 인스턴스를 만들어낸다. 즉, userPreferences bean은 HTTP 세션 레벨에 효과적이다. 요청 bean처럼, 생성된 bean의 내부 상태에 대해서는 바꾸고 싶은 만큼 바꿀 수 있다. 왜냐하면 같은 userPreferences bean의 정의를 이용해 생성된 다른 인스턴스들은 자신의 상태에서는 이 변화를 알아채지 못하기 때문이다. 그들은 개별 요청에 따라 구분되어 있기 때문이다. HTTP 세션이 마침내 종료되면, 그 세션에 특정한 HTTP 세션 bean 역시 버려진다.

 

어노테이션, 자바 설정 기반의 컴포넌트를 사용할 때는 @SessionScope 어노테이션을 통해 세션 scope에 컴포넌트를 할당할 수 있다.

@SessionScope
@Component
public class UserPreferences {
    // ...
}