Spring [핵심] 빈 스코프

신재원·2023년 1월 13일
1

Spring 핵심

목록 보기
18/19

빈 스코프란 ?

스프링은 다음과 같은 다양한 스코프를 지원한다.

  • "싱글톤" : 기본스코프, 가장 넓은 범위의 스코프

  • "프로토 타입" : 매우 짧은 범위의 스코프

    • "웹 관련 스코프"
      • "request" : 웹 요청이 들어오고 나갈때 까지 유지
      • "session" : 웹 세션이 생성되고 종료될 때까지 유지
      • "application" : 웹의 서블릿 같은 범위로 유지
  • 싱글톤 스코프의 빈을 조회하면 스프링 컨테이너는 항상 같은 인스턴스의 빈을 반환, "반면에" 프로토타입을 조회하면 항상 새로운 인스턴스 반환

  • 프로토 타입 빈의 특징

    • 스프링 컨테이너에 요청할 떄 마다 새로 생성
    • 종료 메서드가 호출 X
    • 빈을 조회한 클라이언트가 관리
    • 컨테이너는 빈의 생성과 의존관계 주입, 초기화까지만 관여한다.
  • 정리 : "핵심"은 스프링 컨테이너는 프로토 타입 빈을 생성하고, 의존관계 주입, 초기화 까지만 처리한다. ( 관리는 빈을 받은 클라리언트에 있다) -> 그래서 "@PrerDestory같은 종료 메서드"가 호출되지 않는다.

싱글톤 빈과 함께 사용시 문제점

  • 클라이언트는 프로토 타입으로 스프링 빈에 호출할때 마다 새롭게 받고싶은데, 싱글톤이 default값이라 문제가있음
    • 해결 : Provider로 문제 해결 (잘 사용은 X)
    • ObjectFactory, ObjectProvider = 지정한 빈을 찾아주는 서비스
      • ObjcetProvider가 ObjectFactory를 상속함으로 Provider가 편의기능이 더 많이 지원한다.
      • ObjectProvider<지정한 빈>, .getObject()를 사용해 빈을 찾는다.

0개의 댓글