Bean Scope는 빈이 존재할 수 있는 범위를 뜻함. 스프링은 크게 싱글톤
, 프로토타입
, 웹 관련(request, session)
3묶음으로 나눈다.
스프링 빈의 기본 생명 주기이며, 스프링의 시작과 종료까지 유지된다. 싱글톤이므로 어느 시점에서 요청하든 항상 같은 빈을 반환 한다.
상태값(필드변수)가 공유되어 읽기 이외의 작업에 주의가 필요하다.
프로토타입은 빈 요청이 들어오면 항상 빈을 새로 만들어서 반환한다. 스프링 컨테이너는 프로토타입 Scope를 가진 빈을 생성, 주입, 초기화 처리 후 반환하고 나면 관리 대상에서 제외 된다. 때문에 @PreDestroy 같은 종료 메서드는 호출 할 수 없다.
상태값(필드변수)가 공유되지 않아 변경에 부담이 적다.
싱글톤 Scope빈에 프로토타입 Scope빈을 주입하면 싱글톤 Scope빈이 의존하는 프로토타입 Scope빈은 변하지 않기 때문에 싱글톤 Scope에서 사용 할땐 Provider를 사용해서 주입 받는 걸 권장한다.
한 줄평 : 대부분은 싱글톤 scope로 처리가 가능하다고 한다.