빈 스코프

corncheese·2023년 6월 14일
0

Spring

목록 보기
5/8

빈을 공유하기 위한 인스턴스를 단 하나만 만듬 -> singleton 스코프
빈이 요청될 때마다 새로운 빈 인스턴스를 생성 -> 프로토타입 스코프

빈의 스코프는 bean 엘리먼트의 scope 속성을 사용해 정의한다. 스코프를 지정하지 않으면 그 빈은 싱글턴 스코프로 지정된다.

웹 애플리케이션에서는 request, session, websocket, application 과 같은 몇 가지 스코프를 사용한다.

싱글턴

싱글턴 스코프는 XML 파일에 정의된 모든 빈의 디폴트 스코프이다.
싱글턴 스코프 빈의 인스턴스는 스프링 컨테이너가 생성될 때 함께 생성되고, 스프링 컨테이너가 파괴될 때 함께 파괴된다.
스프링 컨테이너는 싱글턴 스코프 빈의 인스턴스를 단 하나만 만들고, 그 빈에 의존하는 모든 빈에 유일한 인스턴스를 공유한다.

  • 여러 스프링 컨테이너에 있는 싱글턴 스코프 빈
    싱글턴 스코프 빈 인스턴스의 존재 범위는 한 스프링 컨테이너 인스턴스 내부로 제한된다. 똑같은 설정 메타데이터로부터 2개의 스프링 컨테이너를 만들면 각 스프링 컨테이너마다 자신만의 싱글턴 빈 인스턴스를 갖게 된다.

프로토타입

프로토타입 스코프빈이 싱글턴 스코프 빈과 다른 점은 스프링 컨테이너가 항상 프로토타입 스코프 빈의 새로운 인스턴스를 반환한다는 것이다.
그리고 프로토타입 스코프 빈의 또 다른 특징은 프로토타입 빈이 항상 지연 초기화된다는 것이다.
bean 엘리먼트의 scope 속성값을 prototype 으로 설정한다.

빈에 적합한 스코프 선택

빈이 어떤 대화적 상태도 유지하지 않다면(상태가 없는 stateless빈) -> 싱글턴 스코프 빈으로 정의,
빈의 대화적 상태를 유지해야 한다면 프로토타입 스코프 빈으로 정의해야 한다.

0개의 댓글