정리자 - 이태혁(Lee, TaeHyuk)

[Section8 - Bean Scope (빈의 범위)]

8-1) 빈 스코프란?

여태까지 우리는 Singleton Pattern에 의해 Spring Bean은 유일성이 보장된다 라고 배웠다. 그리고 그 Spring Bean은 Spring Container에 등록되면 스프링 컨테이너가 내려갈때까지 살아 있는 걸로 알고 있다. 하지만, Spring Bean은 필요에 따라 어느 순간에 소멸시켜야 하는 경우도 생기고 여러개가 필요할때도 생긴다. 이런 것을 **범위(Scope)**으로 설정한다.

<aside> 💡 한 마디로, 빈이 존재할 수 있는 범위를 뜻한다. (언제부터 언제까지 빈이 살아있을 거야 - 빈의 LifeCycle의 범위를 결정해준다.)

</aside>

Spring Bean의 Scope 종류는 다음과 같이 나열 할 수 있다.

  1. Singleton

  2. ProtoType

  3. 웹 관련 스코프

    1. request - 웹 요청들어오고 나갈때 까지 유지되는 스코프.
    2. session - 웹 세션생성되고 종료될 때 까지 유지되는 스코프.
    3. application - 웹의 서블릿 컨텍스와 같은 범위로 유지되는 스코프.

Bean Scope의 등록 방식은 다음과 같이 @Scope annotation을 사용한다. (default - Singleton)

@Scope("prototype")
@Component
public class Bean{}

8-2) 프로토타입 스코프

디폴트로 Bean을 생성하면 싱글톤 스코프 빈이 생성된다. 그리고 싱글톤 스코프 빈은 유일성이 보장되기 때문에 항상 같은 인스턴스를 호출해온다.