본문 바로가기
Spring/빈

빈 스코프

by 정재익 2026. 2. 15.

스코프란 생명주기

싱글톤 : 스프링의 생성부터 종료

프로토타입 : 요청시 생성 주입 후 관리X

리퀘스트 : HTTP 요청과 나갈때까지 유지 됨 각각의 요청마다 별도의 인스턴스

세션 : HTTP 세션과 동일한 생명주기 세션마다 별도의 인스턴스

애플리케이션 : 서블릿 컨텍스트와 동일

웹 소켓 : 웹 소켓과 동일

 

리퀘스트에서 의존관계주입시 HTTP요청이 없어 빈이 안만들어져 스프링이 안켜질수도있음 그때 프로바이더 쓰면 됨

의존관계 조회를 사용함 필요할때 빈이 제공됨

 

또한 프록시모드 사용가능 일단 CGILB로 가짜 투입해서 의존관계 맞추는 방법임 그리고 요청시점에 찾아서 동작 컨테이너에도 프록시가 등록 됨

 

 

프로토타입 :

요청시 빈 생성 의존관계주입 초기화까지만 해줌

반환하고 관리는 안함

요청시 생성되서 싱글톤아님

 

@프리디스트로이같은거 호출안됨

 

만약 싱글톤 빈안에 프로토타입 빈이 있으면

싱글톤빈은 컨테이너 생산시에 생성 의존관계 주입 발생

싱글톤빈은 생성시점에 프로토타입빈이 주입이 끝남

프로토타입이 싱글톤처럼 되어버림

싱글톤은 생성시점에 주입되기 때문에 프로토타입빈이 새로 생성되지만 싱글톤 빈과 함께 유지됨

프로토타입은 쓰고 버리는거라 상태유지로 쓸 수 있는데 반환이 안되어서 그게 다음 요청에도 이어져버림

 

초기화때마다 프로토타입을 새로 주입받는 방법있음

이건 직접 필요한 의존관계를 찾는것으로 디펜던시 룩업 의존관계 탐색이라고함

단점은 스프링 종속적 코드 단위 테스트 어려워짐

 

그땐 오브젝트 프로바이더를 쓰면 됨

의존관계 탐색을 제공하는 것임

단위테스트만들기 쉬워짐

 

JSR 330 프로바이더도 있음 라이브러리 추가해야함 ㅠ

자바 표준이라 스프링이 아닌 다른 컨테이너도 사용가능

 

프로토타입빈이 필요한 상황

사용할때마다 새로운 객체가 필요한 상황 상태유지가 필요한 상황

순환참조 해결 근데 이건 설계를 바꾸는게 더 좋음

 

 

 

 

'Spring > ' 카테고리의 다른 글

스프링 빈이 만들어지는 과정  (0) 2026.02.15
스프링 애노테이션  (0) 2026.01.05
의존관계 주입  (0) 2025.12.21
스프링 빈 관련 용어  (0) 2025.12.21
제어의 역전  (0) 2025.12.21