빈 생명주기, Bean Scope

무지성개발자·2023년 10월 1일
0

Bean Scope

Bean Scope는 빈이 존재할 수 있는 범위를 뜻함. 스프링은 크게 싱글톤, 프로토타입, 웹 관련(request, session) 3묶음으로 나눈다.

싱글톤 Scope

스프링 빈의 기본 생명 주기이며, 스프링의 시작과 종료까지 유지된다. 싱글톤이므로 어느 시점에서 요청하든 항상 같은 빈을 반환 한다.

상태값(필드변수)가 공유되어 읽기 이외의 작업에 주의가 필요하다.

프로토타입 Scope

프로토타입은 빈 요청이 들어오면 항상 빈을 새로 만들어서 반환한다. 스프링 컨테이너는 프로토타입 Scope를 가진 빈을 생성, 주입, 초기화 처리 후 반환하고 나면 관리 대상에서 제외 된다. 때문에 @PreDestroy 같은 종료 메서드는 호출 할 수 없다.

상태값(필드변수)가 공유되지 않아 변경에 부담이 적다.

싱글톤 Scope빈에 프로토타입 Scope빈을 주입하면 싱글톤 Scope빈이 의존하는 프로토타입 Scope빈은 변하지 않기 때문에 싱글톤 Scope에서 사용 할땐 Provider를 사용해서 주입 받는 걸 권장한다.

웹 관련 Scope

  • request : 요청을 받고 응답을 할 때 까지 빈이 유지된다.
    • 각 요청마다 새로운 빈을 제공.
    • 그냥 주입 받으면 스프링 시작하면서 에러가나 proxy나 provider를 통해 주입 받아야함.
  • session : 세션과 생명 주기가 같다.

한 줄평 : 대부분은 싱글톤 scope로 처리가 가능하다고 한다.

참고 -
https://www.inflearn.com/course/lecture?courseSlug=%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8&unitId=55388&tab=curriculum

profile
no-intelli 개발자 입니다. 그래도 intellij는 씁니다.

0개의 댓글