[Spring] 9-1. 빈 스코프?

송광호·2024년 1월 18일

[Spring]

목록 보기
37/41
post-thumbnail

Spring 시리즈는 혼자 공부하며 기록으로 남기고, 만약 잘못 학습 한 지식이 있다면 공유하며 피드백을 받고자 작성합니다.
스프링에 대해 깊게 공부해보고자 인프런의 김영한 강사님께서 강의를 진행하시는 (스프링 핵심 원리 - 기본편) 강의를 수강하며 정리하는 글입니다.
혹여나 글을 읽으시며 잘못 설명된 부분이 있다면 지적 부탁드리겠습니다.


빈 스코프?

지금까지 우리는 스프링 빈이 스프링 컨테이너가 만들어질 때 빈들도 함께 생성이 되고, 관리되고 놀다가 스프링이 종료되기 직전에 스프링 빈들도 종료가 된다고 배웠다.
왜 그러냐하면 스프링 빈이 기본적으로 싱글톤 스코프로 생성되기 때문이다.
스코프 = 빈이 존재할 수 있는 범위를 뜻한다.

스프링이 지원하는 스코프

  • 싱글톤 : 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다.
  • 프로토타입
    • 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프이다.
    • 빈을 생성하고, 의존관계 주입도 하고, 초기화까지 딱 불러주지만 그게 끝이다. 소멸 메서드는? 안불러준다 그냥 만들어서 던져주고 끝
    • 매우 짧은 범위의 스코프

웹 관련 스코프

  • request : 웹 요청이 들어오고 나갈 때 까지만 유지되는 스코프
    • HTTP 고객요청이 와서 애플리케이션이 동작하다가 응답이 빠져나갈 때까지 유지
  • session : 웹 세션이 생성되고 종료될 때 까지 유지되는 스코프
  • application : 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프

빈 스코프 지정 방법

컴포넌트 스캔 자동 등록

@Scope("prototype")
@Component
public class HelloBean {}

수동 빈 등록

@Scope("prototype")
@Bean
PrototypeBean HelloBean() {
    return new HelloBean();
}

0개의 댓글