1. Bean Scope
Spring은 Bean이라는 개념으로 객체를 만들고 SIngleton화 시켜 관리합니다.
이 Bean으로 생성된 객체들은 Spring Container와 함께 시작되어서 종료될 때까지 Spring이 관리해주는데
이 이유는 Spring Bean들은 Singletone Bean으로 관리되기 때문입니다.
그렇다면 빈 스코프는? 스코프(Scope)는 영어 뜻 그대로 범위인데 직역 그대로 Bean이 관리되는 범위를 의미합니다.
Spring이 가지는 Scope는
- 싱글톤: 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프
- 프로토타입: 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프이다(따라서 빈 콜백중 종료메서드가 호출 X).
- 웹 관련 스코프
- request: 웹 요청이 들어오고 나갈때 까지 유지되는 스코프이다.
- session: 웹 세션이 생성되고 종료될 때 까지 유지되는 스코프이다.
- application: 웹의 서블릿 컨텍스와 같은 범위로 유지되는 스코프이다.
로 구분됩니다.
2. 싱글톤 및 프로토타입 스코프 등록 방법
@Component
public class TestBean{
...
}
SIngleton Scope의 경우 위의 코드와 같이
@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을 반환하면 됩니다.
'Skills > Spring' 카테고리의 다른 글
Spring - Argument Resolver를 이용한 패러미터 처리 (0) | 2022.09.27 |
---|---|
Spring - Bean 생명주기 콜백 (0) | 2022.09.09 |
Spring - ComponentScan(컴포넌트 스캔) (0) | 2022.09.06 |
Spring - Singleton(싱글톤) (0) | 2022.09.04 |
Spring - BeanFactory & BeanDefinition (0) | 2022.09.01 |