Spring
[Spring] 프로토타입 스코프에 대한 나름의 이해
Dong's Universe
2023. 11. 2. 10:25
프로토타입 스코프의 빈은 스프링이 빈을 생성하고 의존관계 주입하고 초기화 메서드를 해주는 것까지만 한다.
그 후 관리는 클라이언트가 해야한다.
예를 들어, 빈 종료도 클라이언트가 해야한다.
이와 다르게 싱글톤 스코프 빈은 스프링 컨테이너가 생성부터 종료까지 관리해준다.
프로토타입 스코프 빈은 요청이 올때마다 만들어져 클라이언트에 반환된다.
이를 @PostConstruct가 붙은 초기화 메소드 init을 통해서 확인해 볼 수 있다.
@Scope("prototype")
static class PrototypeBean {
@PostConstruct
public void init() {
System.out.println("PrototypeBean.init");
}
@PreDestroy
public void destroy() {
System.out.println("PrototypeBean.destroy");
}
}
위의 경우 빈을 조회할 때마다 init가 호출된다.
그러나 컨테이너가 종료되더라도 종료 메서드인 destroy는 호출되지 않는다.
이와 다르게 싱글톤 스코프 빈은 조회를 여러번 하더라도 무조건 단 한번만 init이 호출된다.
그러나 컨테이너가 종료될 때는 종료 메서드인 destroy가 호출된다. 이는 컨테이너가 생성부터 종료까지 관리하는 증거이다.
Reference
학습 페이지
www.inflearn.com