| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- 정리
- 쿼리
- 프로그래머스
- node.js
- 알고리즘
- 코드 테스트
- 스프링
- 백엔드
- BACK-END
- 자바스크립트
- 스프링부트
- jsp
- SQL
- MySQL
- 프런트엔드
- 서버
- 오라클
- java
- 자바
- 프론트엔드
- JavaScript
- oracle
- 미니정리
- Next.js
- web
- 데이터베이스
- 디자인 패턴
- jpa
- spring
- 코드테스트
- Today
- Total
참치코더의 꿈 메모장
Spring / 빈 스코프(싱글톤 스코프, 프로토타입 스코프) 정리 본문
스코프는 빈이 존재할 수 있는 범위를 뜻한다.
싱글톤 스코프
- 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다.
프로토타입 스코프
- 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계(DI) 주입까지만 관여하고 더는 관리하지 않는 매우
짧은 범위의 스코프이다.
웹 관련 스코프
- request : 웹 요청이 들어오고 나갈때 까지 유지되는 스코프이다.
- session : 웹 세션이 생성되고 종료될 때 까지 유지되는 스코프이다.
- application : 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프이다.

- 결국 싱글톤 스코프와의 차이점은 싱글톤은 스프링이 끝까지 관여하면서 빈을 관리해주고 아무리 호출해도 똑같은 객체를
반환해주는 것이고, 프로토타입은 빈 생성 후 DI까지 작업을 완료해준후에 호출한 클라이언트에게 던져서 그 후의 책임은
클라이언트에게 이전시키는 것이다.(@PreDestroy 등 종료 전 메서드 호출 안함) , 또한 여러 사용자가 같은 빈을 호출해도
각각 다른 새로운 빈을 생성해서 사용자에게 반환을 하기 때문에 빈을 공유하지 않는다.
프로토타입 빈의 특징 정리
- 스프링 컨테이너에 요청할 때 마다 새로 생성된다.
- 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입 그리고 초기화까지만 관여한다.
- 종료 메서드가 호출되지 않는다.
- 프로토타입 빈은 프로토타입 빈을 조회한 클라이언트가 관리해야 한다. 종료 메서드에 대한 호출도 클라이언트가 직접 해야한다.
** 싱글톤 스코프와 프로토타입 스코프를 함께 사용하면 문제가 발생한다.(프로토타입 스코프의 1객체를 계속 참조)
** 스프링은 일반적으로 싱글톤 빈을 사용하게 되는데, 싱글톤 빈은 생성 시점에서만 의존관계를 주입 받기 때문에,
프로토타입 빈이 새로 생성되기는 하지만, 싱글톤 빈과 함께 계속 유지되는 것이 문제다.
'Spring' 카테고리의 다른 글
| Spring / Http 연결 및 서블릿 미니 정리 (1) | 2025.08.27 |
|---|---|
| Spring / 웹 스코프 및 의존 관계 주입 시기를 결정하는 Provider, Proxy (0) | 2025.08.19 |
| Spring / 빈 생명주기 콜백(DI 설정 후, 빈 종료 전) 정리 (4) | 2025.08.13 |
| Spring / 애노테이션 만들기, 자동 or 수동 스프링 빈 등록 미니 요약 (1) | 2025.08.11 |
| Spring / 롬복과 @Autowired 필드 명, @Qualifier, @Primary (3) | 2025.08.08 |