본문 바로가기

Back-end/JAVA

Spring Bean Scopes and Lifecycle 정리

Bean Scopes

Spring에서 별도의 설정을 하지 않을 경우 default bean scope는 singleton으로 구성됩니다.

  • singleton : 스프링 default bean scope
  • prototype : 애플리케이션 요청시 ( getBean() 메서드가 호출될 때마다) 스프링이 새 인스턴스를 생성합니다.
  • request : HTTP 요청별로 인스턴스화 되며 요청이 끝나면 소멸됩니다.
  • session : HTTP 세션별로 인스턴스화 되며 세션이 끝나면 소멸됩니다.
  • global session : 포틀릿 기반의 웹 애플리케이션 용도로 전역 세션 스코프가 빈과 같은 스프링 MVC를 사용한 포탈 애플리케이션 내의 모든 포틀릿 사이에 공유를 할 수 있습니다.
  • thread : 새 스레드에서 요청하면 새로운 bean 인스턴스를 생성합니다. 같은 스레드의 요청에는 항상 같은 인스턴스가 반환됩니다.
  • custom : org.pringframework.beans.factory.config.Scope를 구현하고 커스텀 스코프를 스프링의 설정에 등록하여 사용합니다.

※ request, session, global session의 스코프는 일반 spring 애플리케이션이 아닌 Spring MVC Application에서만 사용되는 용도입니다.

 

Bean Life Cycle

빈 라이프 사이클은 기본적으로 생성, 의존 설정, 초기화, 소멸의 단계를 거칩니다. 하지만 어떤 컨테이너를 사용하느냐에 따라 차이가 있습니다.

Bean Factory는 기본적인 의존성 주입을 지원하는 가장 간단한 형태의 컨테이너이고, getBean() 메서드가 호출될 때까지 빈의 생성을 미룹니다. Application Context는 BeanFactory를 상속한 형태로 BeanFactory의 모든 기능을 가지며 추가적인 기능을 가지는 컨테이너 입니다. Application context는 context가 시작하기 전에 모든 빈을 생성하고 로딩해서, 원하는 시기에 언제든지 가져다가 쓸 수 있습니다.

 

출처 : ooeunz.tistory.com/107