[Spring] 프로토타입 스코프에 대한 나름의 이해

2023. 11. 2. 10:25Spring

프로토타입 스코프의 빈은 스프링이 빈을 생성하고 의존관계 주입하고 초기화 메서드를 해주는 것까지만 한다.
그 후 관리는 클라이언트가 해야한다.
예를 들어, 빈 종료도 클라이언트가 해야한다.
 
이와 다르게 싱글톤 스코프 빈은 스프링 컨테이너가 생성부터 종료까지 관리해준다.
 
프로토타입 스코프 빈은 요청이 올때마다 만들어져 클라이언트에 반환된다.
이를 @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


https://www.inflearn.com/course/lecture?courseSlug=%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8&unitId=55389

학습 페이지

www.inflearn.com