[Spring]빈 스코프(Bean Scope)의 종류 및 개념
1. 빈 스코프란?
스프링은 빈이라는 개념으로 객체를 만들고 싱글톤화 시켜 관리해준다.
이 빈으로 생성된 객체들은 스프링 컨테이너와 함께 시작되어서 종료될 때까지 스프링이 관리해주는데
이 이유는 스프링 빈들은 싱글톤 스코프로 관리되기 때문이다.
그렇다면 빈 스코프란 무엇일까?
스코프(Scope)는 영어 뜻 그대로 범위인데
해석한 그대로 빈이 관리되는 범위를 뜻한다.
스프링이 가지는 스코프는 아래와 같다.
- 싱글톤: 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다.
- 프로토타입: 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프이다(따라서 빈 콜백중 종료메서드가 호출이 안된다.).
- 웹 관련 스코프
- request: 웹 요청이 들어오고 나갈때 까지 유지되는 스코프이다.
- session: 웹 세션이 생성되고 종료될 때 까지 유지되는 스코프이다.
- application: 웹의 서블릿 컨텍스와 같은 범위로 유지되는 스코프이다.
2. 싱글톤 및 프로토타입 스코프 등록 방법
@Component
public class TestBean{
...
}
싱글톤 스코프의 경우 위의 예시 코드와 같이
@Component 로 등록을 해놓으면 디폴트 값이기 때문에
저렇게만 해놓아도 자동으로 등록되니 생략하겠다.
프로토타입 스코프의 경우에는 자동으로 등록되도록 하는 방법과 수동으로 등록되게 하는 방법이 있다.
2.1 프로토 타입 스코프 자동 등록하기
@Scope("prototype")
@Component
public class TestBean{
...
}
자동 등록의 경우 @Scope로 해놓고 prototype을 명시해놓으면 된다.
2.2 프로토 타입 스코프 수동 등록하기
@Scope("prototype")
@Bean
public class TestBean{
PrototypeBean TestBean(){
return new TestBean();
}
}
수동 등록의 경우에는 @Bean, @Scope를 명시한 다음 생성자로 PrototypeBean을 반환하면 된다.
Reference
이 포스팅은 아래의 강좌를 참고하여 만들어졌습니다.
- 스프링 핵심 원리-기본편
'Backend > Spring' 카테고리의 다른 글
[Spring]스프링에서 공통 Response처리 하기(@ControllerAdvice 이용) (0) | 2020.11.04 |
---|---|
ipTIME의 DDNS를 이용하여 운영 서버 구축하기(포트포워딩) (1) | 2020.10.30 |
[Spring]스프링 빈(Bean)을 초기화 및 종료하는 3가지 방법(Bean 생명주기 콜백) (0) | 2020.10.27 |
[Spring] 스프링의 빈(Bean) 생명주기 콜백의 개념 및 예제 (0) | 2020.10.24 |
[SpringBoot] ajax로 사진 업로드와 삭제, 썸네일 미리보기 기능 구현하기 (4) | 2020.07.30 |