본문 바로가기

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

5.4.4. 애플리케이션 Scope

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

 

 

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

<bean id="appPreferences" class="com.something.AppPreferences" scope="application" />

스프링 컨테이너는 전체 웹 애플리케이션을 위해 한번만 AppPreferences bean의 새로운 인스턴스를 만들어낸다. 즉, appPreferences bean은 ServletContext 레벨의 scope이며, 일반적인 ServletContext의 속성으로서 저장된 것이다. 이는 스프링의 싱글턴 bean과 어느정도 비슷하다. 하지만 중요한 두 가지가 다르다. 하나는 스프링 'ApplicationContext'(여러 웹 애플리케이션이 있을 수 있다)마다의 싱글턴이 아니라 ServletContext마다의 싱글턴이라는 점이다. 그리고 또 하나는 실제로 표현되기 때문에 ServletContext의 속성으로서 보인다는 점이다.

 

어노테이션, 자바 설정 기반의 컴포넌트를 사용한다면 @ApplicationScope 어노테이션이 애플리케이션 scope에 컴포넌트를 할당해줄 것이다. 다음 예시는 그 방법을 보여준다.

@ApplicationScope
@Component
public class AppPreferences {
    // ...
}