스코프
- 빈이 존재할 수 있는 범위
- 싱글톤
- 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다.
- 프로토타입
- 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프이다.
- 웹 관련 스코프
- request : 웹 요청이 들어오고 나갈때 까지 유지되는 스코프이다.
- session : 웹 세션이 생성되고 종료될 때 까지 유지되는 스코프이다.
- application : 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프이다.
컴포넌트 스캔 자동 / 수동 등록
@Scope("prototype")
@Component
public class HelloBean {}
@Scope("prototype")
@Bean
PrototypeBean HelloBean() {
return new HelloBean();
}
프로토 타입 빈
- 프로토타입 스코프의 빈을 스프링 컨테이너에 요청 (동일 빈이 아닌 새로운 빈을 각각 생성함)
- 스프링 컨테이너는 이 시점에 프로토타입 빈을 생성하고, 필요한 의존관계를 주입
- 스프링 컨테이너는 생성한 프로토타입 빈을 클라이언트에 반환
- 이후에 스프링 컨테이너에 같은 요청이 오면 항상 새로운 프로토타입 빈을 생성해서 반환한다.
- 스프링 컨테이너는 프로토타입 빈을 생성하고, 의존관계 주입, 초기화까지만 처리한다
- @PreDestroy 같은 종료 메서드가 호출되지 않는다.
프로토타입 스코프 - 싱글톤 빈과 함께 사용시 Provider로 문제 해결
@Autowired
private Provider<PrototypeBean> provider;
public int logic() {
PrototypeBean prototypeBean = provider.get();
prototypeBean.addCount();
int count = prototypeBean.getCount();
return count;
}
'Spring > Basic' 카테고리의 다른 글
[Basic] Tomcat 직접 등록을 통한 환경 세팅 방법 (0) | 2024.08.09 |
---|---|
[Basic] 웹 스코프 (0) | 2024.04.07 |
[Basic] 빈 생명주기 (0) | 2024.04.07 |
[Basic] 의존관계 자동 주입 (0) | 2024.04.05 |
[Basic] ComponentScan (0) | 2024.04.05 |