빈이 존재할 수 있는 범위
- 스프링 빈은 기본적으로 싱글톤
- 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프
- 스프링 컨테이너당 하나의 인스턴스 빈만 생성
- 컨테이너가 제공하는 모든 빈의 인스턴스는 항상 동일
- 컨테이너가 항상 새로운 인스턴스를 반환하게 만들고 싶을 경우 scope를 prototype으로 설정해야 함
@Scope(value="singleton")
- 컨테이너에 빈을 요청할 때마다 새로운 인스턴스 생성
- 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프
@Scope(value="prototype")
- 페이지 내에서 지역변수처럼 사용
- EL 표현법 등으로 표현
- HTTP Request 별로 새로운 인스턴스 생성
- 웹 요청이 들어오고 나갈 때까지 유지되는 스코프
- 애플리케이션 코드에서 생성한 정보를 프레임워크 레벨의 서비스나 인터셉터 등에 전달하는 것
@Scope(value="request")
- HTTP Session 별로 새로운 인스턴스 생성
- 웹 세션이 생성되고 종료될 때까지 유지되는 스코프
@Scope(value="session")
- Servlet Context와 같은 범위로 유지되는 스코프
@Scope(value="application")
참고자료: https://catsbi.oopy.io/b2de2693-fd8c-46e3-908a-188b3dd961f3, https://gunju-ko.github.io/toby-spring/2019/04/15/프로토타입과-스코프.html, https://velog.io/@kir3i/섹션-9.-프로토타입-스코프-싱글톤-빈과-함께-사용-시-문제점