📌 빈 스코프란?
빈 스코프
빈 스코프(scope)는 빈이 존재하는 범위이다. 빈의 생명주기로 볼 수 있다.
👉 빈 스코프 종류
- 싱글톤 스코프
- 프로토타입 스코프
- 웹 스코프
1. 싱글톤 스코프
- 빈 생명주기가 제일 긴 스코프이다.
- 스코프 범위: 스프링 컨테이너 생성 ~ 스프링 컨테이너 종료
- 스프링 빈의 기본 스코프이다.
싱글톤 패턴
- 클래스 인스턴스 1개만 생성
- 스프링 컨테이너는 기본적으로 빈을 싱글톤으로 관리
- 하나의 객체 인스턴스를 여러 곳에서 공유 -> 무상태로 설계하기!
- 특정 클라이언트에서 값을 변경하거나 의존적인 필드 생성하지 않기
- 공유되지 않는 지역 변수, 파라미터 등을 사용해서 가급적 필드 공유하지 않기
2. 프로토타입 스코프
- 빈의 생명주기가 가장 짧은 스코프이다.
- 스프링 컨테이너는 프로토타입 빈 생성, 의존관계 주입, 초기화 메서드 호출만 관여한다.
- 종료 메서드를 호출하지 않는다.
코드 예시
@Scope("prototype")
@Component
public class MyBean {}
3. 웹 스코프
- 웹 환경에서만 동작한다.
- 종료 메서드를 호출한다.
웹 스코프 종류
- request
- HTTP 요청마다 인스턴스가 생성된다.
- HTTP 요청 들어오고 나갈 때까지 빈의 생명주기이다.
- session
- HTTP sesstion과 동일한 생명주기를 갖는다.
- application
- websocket
코드 예시
@Scope("requset")
@Component
public class MyBean {}
출처
인프런 '스프링 핵심 원리 - 기본편' 강의