-
[Spring] 스프링 핵심 원리 - 빈 스코프Study/Spring 2025. 4. 17. 01:14
빈 스코프란?
- 스코프는 ‘빈이 존재할 수 있는 범위’를 뜻함
- 스프링은 다음과 같은 다양한 스코프를 지원함
- 싱글톤 : 기본 스코프
- 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프
- 프로토타입
- 스프링 컨테이너는 프로토타입 빈의 생성, 의존관계 주입, 초기화 콜백까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프
- 웹 관련 스코프
- request : 웹 요청이 들어오고 나갈 때까지 유지되는 스코프
- session : 웹 세션이 생성되고 종료될 때까지 유지되는 스코프
- application : 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프
- 싱글톤 : 기본 스코프
프로토타입 스코프
- 프로토타입 스코프의 빈을 스프링 컨테이너에서 조회하면 항상 새로운 인스턴스를 생성해서 반환함
- 특징
- 핵심은 스프링 컨테이너는 프로토타입 빈을 생성하고, 의존관계 주입, 초기화까지만 처리한다는 것
- 클라이언트에 빈을 반환하고, 이후 스프링 컨테이너는 생성된 프로토타입 빈을 관리하지 않음
- 이후 프로토타입 빈을 관리할 책임은 프로토타입 빈을 받은 클라이언트에 있음
- 따라서 @PreDestroy 같은 종료 메서드가 호출되지 않음
프로토타입 빈 요청
- 프로토타입 스코프의 빈을 스프링 컨테이너에 요청한다.
- 스프링 컨테이너는 이 시점에 프로토타입 빈을 생성하고, 필요한 의존관계를 주입한다.
- 스프링 컨테이너는 새롭게 생성한 프로토타입 빈을 클라이언트에 반환한다. (이후 더이상 스프링 컨테이너가 관리하지 않음)
- 이후에 스프링 컨테이너에 같은 요청이 오면 항상 새로운 프로토타입 빈을 생성해서 반환한다.
참고) 싱글톤 빈 요청
더보기- 싱글톤 스코프의 빈을 조회하면 스프링 컨테이너는 항상 같은 인스턴스의 스프링 빈을 반환함
- 싱글톤 스코프의 빈을 스프링 컨테이너에 요청한다.
- 스프링 컨테이너는 본인이 관리하는 스프링 빈을 반환한다.
- 이후에 스프링 컨테이너에 같은 요청이 와도 동일한 객체 인스턴스의 스프링 빈을 반환한다.
웹 스코프
- 웹 환경에서만 동작함
- 프로토타입과 다르게 스프링이 해당 스코프의 종료 시점까지 관리함. 따라서 종료 메서드가 호출됨
종류
- request
- HTTP 요청 하나가 들어오고 나갈 때까지 유지되는 스코프
- 각각의 HTTP 요청마다 별도의 빈 인스턴스가 생성되고, 관리됨
- session : HTTP Session과 동일한 생명주기를 가지는 스코프
- application : 서블릿 컨텍스트와 동일한 생명주기를 가지는 스코프
- websocket : 웹 소켓과 동일한 생명주기를 가지는 스코프
참고
'Study > Spring' 카테고리의 다른 글
[Spring] Spring MVC - 구조 이해 및 기본 기능 (0) 2025.04.19 [Spring] Spring MVC - 서블릿 (0) 2025.04.17 [Spring] 스프링 핵심 원리 - 빈 생명주기 콜백 (0) 2025.04.16 [Spring] 스프링 핵심 원리 - 의존관계 자동 주입 (0) 2025.04.16 [Spring] 스프링 핵심 원리 - 컴포넌트 스캔 (0) 2025.04.16