다음 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 {
// ...
}
'SpringFramework Core - I. IoC 컨테이너 > 5. Bean Scopes' 카테고리의 다른 글
5.4.6. 생성을 위한 프록시 종류 고르기 (0) | 2020.03.20 |
---|---|
5.4.5. 의존성으로서의 Scoped Beans (0) | 2020.03.20 |
5.4.3. 세션 Scope (0) | 2020.03.19 |
5.4.2. 요청 scope (0) | 2020.03.19 |
5.4.1. 웹 초기 설정 (0) | 2020.03.19 |