참고
더보기
Spring core basic 시리즈는 김영한 님의 "스프링 핵심 원리 - 기본편" 강의를 정리한 글입니다. 글에 첨부된 사진은 해당 강의의 강의 자료에서 캡쳐한 것입니다. 제 Github에만 올려뒀다가, 정보 공유와 강의 홍보(?)를 위해 블로그에도 업로드합니다. 마크다운을 잘 쓰지 못해서 가독성이 조금 떨어지는 점 양해 바랍니다.
스프링 핵심 원리 - 기본편 - 인프런 | 강의
스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런...
www.inflearn.com
웹 스코프 - 개요
지금까지 싱글톤 스코프와 프로토타입 스코프를 학습했다.
싱글톤은 스프링 컨테이너의 시작과 끝까지 함께하는 매우 긴 스코프이고, 프로토타입은 생성과 의존관계 주입, 그리고 초기화까지만 진행하는 특별한 스코프이다.
웹 스코프 특징
- 웹 스코프는 웹 환경에서만 동작한다.
- 웹 스코프는 프로토타입 스코프와 다르게 스프링이 해당 스코프의 종료 시점까지 관리한다. 따라서 스프링에 의해 종료 메서드가 호출된다.
웹 스코프 종류
- request: HTTP 요청 하나가 들어오고 나갈 때 까지 유지되는 스코프이다. 각각의 HTTP 요청마다 별도의 빈 인스턴스가 생성되고 관리된다.
- session: HTTP Session과 동일한 생명주기를 가지는 스코프
- application: 서블릿 컨텍스트(ServletContext )와 동일한 생명주기를 가지는 스코
- websocket: 웹 소켓과 동일한 생명주기를 가지는 스코프
Session, application, websocket의 경우는 웹 관련 지식이 부족해서 잘 모르겠는데, reqeuest와 범위만 다를 뿐 동작 방식은 비슷하다고 한다. 따라서 여기서는 예제로 request 스코프만 사용한다.
각각의 HTTP request 당 할당되는 request 스코프 빈
- 클라이언트 A가 HTTP request를 하면, Controller가 HTTP request가 왔으므로, request scope에 관련된 빈을 조회를 할 것이다. 여기서는 Controller가 myLoger 빈을 조회한다고 하자.
- myLoger 빈은 HTTP request에 관련된 빈이므로, 클라이언트 A의 HTTP request 전용의 request scope 빈이 생성된다.
- 만약에 클라이언트 A의 HTTP request가 Service 객체에 관련된 동작을 요구한다면, Service 객체는 이전에 만들어두었던 클라이언트 A의 request 빈을 가지고 작업을 할 것이다.
- 클라이언트 B가 클라이언트 A와 완전히 동일한 시점에, 동일한 요청을 하더라도, 두 요청은 엄연히 다른 HTTP request 이므로 클라이언트 B 전용의 request 빈이 생성된다.
프로토타입 빈은 요청할 때 만들어지고, 그 이후로는 관리되지 않는다. 반면에 request 빈은 request가 들어오는 시점에 생성되고, request가 끝날 때 까지 계속 관리되고, 사용된다. 따라서 종료 메서드도 정상적으로 호출된다.
'Spring > Spring core basic' 카테고리의 다른 글
[Spring core basic] 48 - Request scope와 Provider (0) | 2022.05.03 |
---|---|
[Spring core basic] 47 - Request scope 예제 (0) | 2022.05.03 |
[Spring core basic] 45 - Provider로 프로토타입 빈과 싱글톤 빈 함께 사용하기 (0) | 2022.05.03 |
[Spring core basic] 44 - 프로토타입 빈을 싱글톤 빈과 함께 사용하면 발생하는 문제점 (0) | 2022.05.03 |
[Spring core basic] 43 - 프로토타입 스코프 (0) | 2022.05.03 |
댓글