Bean definition이 레시피라는 개념이 중요하다.
Bean definition = 빈이 존재할 수 잇는 범위를 의미한다.
Scope | Description |
---|---|
singleton | (Default) 각 Spring 컨테이너에 대한 단일 객체 인스턴스에 대한 단일 bean definition의 범위를 지정한다. |
prototype | 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프이다. |
request | 웹 요청이 들어오고 나갈때 까지 유지되는 스코프이다. |
session | 웹 세션이 생성되고 종료될 때 까지 유지되는 스코프이다. |
application | 웹의 서블릿 컨텍스와 같은 범위로 유지되는 스코프이다. |
websocket | 단일 bean definition 범위를 WebSocket의 라이프사이클까지 확장한다. Spring ApplicationContext의 컨텍스트에서만 유효하다. |
특정 bean정의에서 생선된 개체에 연결할 다양한 의존성 및 구성 값뿐만 아니라 특정 bean정의에서 생성된 개체의 범위도 제어할 수 있다.
Spring Framework는 6개의 범위를 지원하며, 그중 4개는 ApplicationContext를 사용하는 경우에만 사용할 수 있다.
구성을 통해 생성하는 개체의 범위를 선택할 수 있기 때문에 강력하고 유연하다.
사용자 정의 범위를 생성할 수 있다.
정리를 해보자면 빈스코프는 bean의 범위를 지정해주는것이다.
언제 사라질지, 언제 어떻게 사용할 것인지..
그래서 Bean definition이 레시피인것이다. 특정 bean에 대한 설명서(레시피)
(내가 이해한 내용)