Spring Bean Scope 정리

Spring Bean Scope

 

스프링에서 Bean으로 지정된 객체는 기본적으로 싱글톤 객체로 관리된다. 하지만 요구사항 과 구현기능 등의 필요에 따라서 비싱글톤이 필요한 경우도 많다. 스프링에서는 이를 명시적으로 구분하기 위해서 scope라는 키워드를 제공한다.

 

 

빈 스코프(scope)

 별도의 scope를 지정하지 않으면 스프링에서 default는 singleton 이다.

  • singleton : 기본 싱글톤 스코프
  • prototype : 어플리케이션에서 요청시 (getBean()) 마다 스프링이 새 인스턴스를 생성
  • request : HTTP 요청별로 인스턴스화 되며 요청이 끝나면 소멸 (spring mvc webapplication 용도)
  • session : HTTP 세션별로 인스턴스화되며 세션이 끝나며 소멸 (spring mvc webapplication 용도)
  • global session : 포틀릿 기반의 웹 어플리케이션 용도. 전역 세션 스코프의 빈은 같은 스프링 MVC를 사용한 포탈 어플리케이션 내의 모든 포틀릿 사이에서 공유할 수 있다
  • thred : 새 스레드에서 요청하면 새로운 bean 인스턴스를 생성, 같은 스레드에 대해서는 항상 같은 bean 인스턴스가 반환
  • custom : org.pringframework.beans.factory.config.Scope를 구현하고 커스텀 스코프를 스프링의 설정에 등록하여 사용

 

request, session, global session의 스코프는 일반 spring 어플리케이션이 아닌, Spring MVC Web Application에서만 사용되는 용도

 

 

XML 사용방법

 xml 설정파일 bean정의 시 scope 명시적 지정

1
<bean id="normalBean" class="com.java.SomeClass" scope="singleton"/>
cs

 

 

Annotation 사용방법

 대상 Class 어노테이션 정의시 @Scope 지정

1
2
3
4
5
6
7
8
9
package com.java.pojo;
 
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
 
@Service("simpleBean")
@Scope("singletone")
public class SimpleClass {
}
cs

 

 

이 글을 공유하기

댓글

Email by JB FACTORY