참치코더의 꿈 메모장

Spring / 빈 스코프(싱글톤 스코프, 프로토타입 스코프) 정리 본문

Spring

Spring / 빈 스코프(싱글톤 스코프, 프로토타입 스코프) 정리

참치깡 2025. 8. 14. 18:53
728x90

스코프는 빈이 존재할 수 있는 범위를 뜻한다.

 

싱글톤 스코프 

 - 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다.

 

프로토타입 스코프

- 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계(DI) 주입까지만 관여하고 더는 관리하지 않는 매우 

  짧은 범위의 스코프이다.

 

웹 관련 스코프

- request : 웹 요청이 들어오고 나갈때 까지 유지되는 스코프이다.

- session : 웹 세션이 생성되고 종료될 때 까지 유지되는 스코프이다.

- application : 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프이다.

 

스코프 등록방법

 

- 결국 싱글톤 스코프와의 차이점은 싱글톤은 스프링이 끝까지 관여하면서 빈을 관리해주고 아무리 호출해도 똑같은 객체를

  반환해주는 것이고, 프로토타입은 빈 생성 후 DI까지 작업을 완료해준후에 호출한 클라이언트에게 던져서 그 후의 책임은 

  클라이언트에게 이전시키는 것이다.(@PreDestroy 등 종료 전 메서드 호출 안함) , 또한 여러 사용자가 같은 빈을 호출해도 

  각각 다른 새로운 빈을 생성해서 사용자에게 반환을 하기 때문에 빈을 공유하지 않는다.

 

프로토타입 빈의 특징 정리

 

- 스프링 컨테이너에 요청할 때 마다 새로 생성된다.

 

- 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입 그리고 초기화까지만 관여한다.

 

- 종료 메서드가 호출되지 않는다.

 

- 프로토타입 빈은 프로토타입 빈을 조회한 클라이언트가 관리해야 한다. 종료 메서드에 대한 호출도 클라이언트가 직접 해야한다.

 

** 싱글톤 스코프와 프로토타입 스코프를 함께 사용하면 문제가 발생한다.(프로토타입 스코프의 1객체를 계속 참조)

 

** 스프링은 일반적으로 싱글톤 빈을 사용하게 되는데, 싱글톤 빈은 생성 시점에서만 의존관계를 주입 받기 때문에,

   프로토타입 빈이 새로 생성되기는 하지만, 싱글톤 빈과 함께 계속 유지되는 것이 문제다.

728x90
Comments