[spring] 빈 스코프, 싱글톤 빈, 프로토타입 빈, 웹 빈

괭이밥·2022년 11월 5일

spring

목록 보기
6/10
post-thumbnail

📌 빈 스코프란?

빈 스코프

빈 스코프(scope)는 빈이 존재하는 범위이다. 빈의 생명주기로 볼 수 있다.


👉 빈 스코프 종류

  1. 싱글톤 스코프
  2. 프로토타입 스코프
  3. 웹 스코프


1. 싱글톤 스코프

  • 빈 생명주기가 제일 긴 스코프이다.
  • 스코프 범위: 스프링 컨테이너 생성 ~ 스프링 컨테이너 종료
  • 스프링 빈의 기본 스코프이다.

싱글톤 패턴

  • 클래스 인스턴스 1개만 생성
  • 스프링 컨테이너는 기본적으로 빈을 싱글톤으로 관리
  • 하나의 객체 인스턴스를 여러 곳에서 공유 -> 무상태로 설계하기!
    • 특정 클라이언트에서 값을 변경하거나 의존적인 필드 생성하지 않기
    • 공유되지 않는 지역 변수, 파라미터 등을 사용해서 가급적 필드 공유하지 않기

2. 프로토타입 스코프

  • 빈의 생명주기가 가장 짧은 스코프이다.
  • 스프링 컨테이너는 프로토타입 빈 생성, 의존관계 주입, 초기화 메서드 호출만 관여한다.
  • 종료 메서드를 호출하지 않는다.

코드 예시

  • @Scope("prototype") 추가
@Scope("prototype")
@Component
public class MyBean {}

3. 웹 스코프

  • 웹 환경에서만 동작한다.
  • 종료 메서드를 호출한다.

웹 스코프 종류

  • request
    • HTTP 요청마다 인스턴스가 생성된다.
    • HTTP 요청 들어오고 나갈 때까지 빈의 생명주기이다.
  • session
    • HTTP sesstion과 동일한 생명주기를 갖는다.
  • application
    • 서블릿 컨텍스트와 동일한 생명주기를 갖는다.
  • websocket
    • 웹 소켓과 동일한 생명주기를 갖는다.

코드 예시

  • @Scope("request") 추가
@Scope("requset")
@Component
public class MyBean {}


출처
인프런 '스프링 핵심 원리 - 기본편' 강의

profile
개발도 하고 싶은 클라우드 엔지니어

0개의 댓글