[Spring] 빈 스코프

Bam·2024년 10월 20일
0

Spring

목록 보기
45/48
post-thumbnail

빈 스코프

빈 스코프(Bean Scope)는 빈이 존재하는 범위(등록부터 소멸까지)를 의미합니다. 스프링 프레임워크에서 지원하는 빈 스코프는 다음과 같은 여섯 가지의 종류가 있습니다.

  • 싱글톤
  • 프로토타입
  • request
  • session
  • application
  • websocket

빈 스코프는 @Scope("스코프") 어노테이션을 통해서 지정할 수 있습니다. 기본값은 싱글톤(singleton)을 갖습니다.

request, session, application, websocket은 웹 환경에서만 유효한 스코프입니다.

싱글톤

싱글톤은 언급했듯이 기본값으로 가지는 스코프입니다. 컨테이너가 시작될 때 빈이 등록되고, 컨테이너가 종료될 때 같이 소멸되는 스코프입니다.

싱글톤은 빈이 단일 인스턴스로 관리되기 때문에 동일 요청에 대해서 항상 같은 빈을 반환합니다. 즉, 등록부터 소멸까지 단 하나의 빈이 사용됩니다.

프로토타입

프로토타입은 스프링 컨테이너가 빈의 생성과 주입까지만 관리하는 짧은 범위의 스코프입니다. 그래서 빈 초기화 메소드는 호출이 가능하지만 소멸 메소드는 호출할 수 없다는 특징이 있습니다.

만약 빈 관리나 소멸 메소드를 사용하고 싶다면 클라이언트측 코드에 따로 빈 관리/소멸에 대한 내용을 작성해야합니다.

프로토타입 스코프 빈은 요청이 온 시점에 빈을 생성합니다.

또 다른 특징으로는 해당 빈의 요청이 있을 때마다 새로운 인스턴스를 생성합니다.

웹 스코프 - request, session, application, websocket

request, session, application, websocket은 웹 환경의 스프링 컨테이너에만 적용할 수 있는 스코프입니다. 웹 스코프들은 스코프 범위 동안 스프링 컨테이너가 빈을 관리해주기에 초기화 메소드와 종료 메소드를 모두 호출할 수 있습니다.

  • request: HTTP 요청이 들어왔다 나갈 때 까지의 스코프. 각 HTTP 요청은 별개의 빈 인스턴스를 생성하고 관리.
  • session: HTTP 세션이 연결되고 종료될 때 까지의 스코프. 각 세션은 별개의 빈 인스턴스를 생성하고 관리.
  • application: 웹 어플리케이션(Servlet Context)의 생명주기를 따르는 스코프.

    Servlet Context Lifecycle

    1. 서블릿 생성(로딩)
    2. 서블릿 초기화
    3. 요청 처리
    4. 서블릿 소멸
  • websocket: websocket 세션의 생명주기를 따르는 스코프

0개의 댓글