지식

스프링 빈 스코프 prototype와 singleton의 차이

colin2 2024. 10. 14. 16:55

 

클래스 인스턴스 초기화를 할 때 호출할 initMethod()와 destroyMethod()를 만들어 놓았고,

applicationContext.xml 파일에 bean을 등록하는 상황에서 init-method, destroy-method 속성 값으로 콜백 될 메서드를 넣어주었다.

 

스코프를 singleton으로 설정한 것과 prototype으로 설정한 것을 비교하는 상황이었다.

 

singleton은 간단하게 하나의 객체만 생성이 되도록 해주는 것이니 아래처럼 작성했더라도 하나의 빈을 반환한다.

 

이와 다르게 prototype은 불릴 때마다 새로운 빈을 생성하여 init 메소드가 3번이 불리는 것을 볼 수 있다.

 

그런데 여기서 궁금증이 생겼다.

 

init 메소드는 실행이 되었는데, destroy 메소드는 어디에..?

 


결론은 프로토타입이 스프링 빈을 클라이언트에 반환한 이후로는 관리하지 않기 때문에 소멸 메소드는 자체적으로 관리해야 한단다.

 

이와 관련해서 더 깊게 알고 싶다면 아래 포스팅을 참조하면 아주 자세하게 알 수 있을 것이다.

감사합니다!

 

https://catsbi.oopy.io/b2de2693-fd8c-46e3-908a-188b3dd961f3