Bean Scope

Soozoo·2024년 8월 12일

Spring

목록 보기
5/12

스프링에서 Bean scope는 스프링 컨테이너가 빈의 인스턴스를 생성하고 관리하는 방식, 즉 빈이 생성되고 존재하는 범위를 정의합니다. 스프링 프레임워크는 여러 가지 빈 스코프를 지원하며, 이들은 각각 빈의 생애 주기를 결정합니다.

주요 Bean Scope 종류

  1. Singleton (싱글턴)
    • 설명: 기본 스코프로, 애플리케이션 컨텍스트 내에서 빈의 인스턴스가 단 하나만 생성됩니다. 모든 요청은 동일한 인스턴스를 반환합니다.
    • 특징: 애플리케이션 내에서 전역적으로 공유되는 상태를 관리할 때 유용하지만, 멀티스레드 환경에서는 동시성 문제에 주의해야 합니다.
    • 예제:
      <bean id="myBean" class="com.example.MyClass" scope="singleton" />
      
  2. Prototype (프로토타입)
    • 설명: 빈의 새로운 인스턴스가 요청될 때마다 생성됩니다. 빈의 상태가 각 요청마다 다르게 유지되어야 할 경우 사용됩니다.
    • 특징: 빈의 생애 주기가 짧으며, 컨테이너가 아닌 클라이언트 코드가 관리해야 합니다. 초기화와 소멸 콜백도 클라이언트가 직접 호출해야 합니다.
    • 예제:
      <bean id="myBean" class="com.example.MyClass" scope="prototype" />
      
  3. Request (요청)
    • 설명: 웹 애플리케이션에서 사용되는 스코프로, HTTP 요청당 하나의 빈 인스턴스가 생성되고, 요청이 종료되면 소멸됩니다.
    • 특징: 주로 웹 애플리케이션에서 각 요청마다 별도의 빈 인스턴스를 필요로 할 때 사용됩니다.
    • 예제:
      <bean id="myBean" class="com.example.MyClass" scope="request" />
      
  4. Session (세션)
    • 설명: 웹 애플리케이션에서 HTTP 세션마다 하나의 빈 인스턴스가 생성되고, 세션이 종료될 때 소멸됩니다.
    • 특징: 사용자 세션별로 빈을 유지해야 할 때 사용됩니다.
    • 예제:
      <bean id="myBean" class="com.example.MyClass" scope="session" />
      
  5. Global Session (글로벌 세션)
    • 설명: 포털 애플리케이션에서 글로벌 HTTP 세션당 하나의 빈 인스턴스가 생성되고, 글로벌 세션이 종료될 때 소멸됩니다. 주로 포틀릿(Portlet) 환경에서 사용됩니다.
    • 특징: 포틀릿 기반의 애플리케이션에서 사용되며, 일반적인 웹 애플리케이션에서는 잘 사용되지 않습니다.
    • 예제:
      <bean id="myBean" class="com.example.MyClass" scope="globalSession" />
      
  6. Application (애플리케이션)
    • 설명: ServletContext와 동일한 스코프를 가지며, 애플리케이션 내에서 하나의 빈 인스턴스를 공유합니다.
    • 특징: 주로 서블릿 컨텍스트 내에서 전역적으로 빈을 공유할 때 사용됩니다.
    • 예제:
      <bean id="myBean" class="com.example.MyClass" scope="application" />
      

Bean Scope 설정 방법

빈 스코프는 XML 설정 파일이나 자바 설정 파일에서 지정할 수 있습니다.

  • XML 설정 파일에서 스코프 지정:
    <bean id="myBean" class="com.example.MyClass" scope="prototype" />
    
  • 자바 설정 파일에서 스코프 지정:
    @Bean
    @Scope("prototype")
    public MyClass myBean() {
        return new MyClass();
    }
    

스코프의 선택은 애플리케이션의 요구사항과 빈의 역할에 따라 결정되며, 각 스코프의 특징을 잘 이해하고 사용해야 합니다.

profile
넙-죽

0개의 댓글