본문 바로가기
FrameWork/Spring

싱글톤 컨테이너

by titlejjk 2023. 7. 24.

앞서 말한 싱글톤에서 정리를 하자면

먼저 스프링은 기업용 온라인 서비스 기술을 방향으로 지원하기 위해 만들어지고 개발되어왔다. 그렇기에 대부분이 웹 애플리케이션인데, 싱글톤사용전에는 웹 애플리케이션은 보통 여러 클라이언트들에게 동시 요청이 올 때마다 새로운 객체를 생성 소멸 했었다.

순수한 DI컨테이너는 요청을 할 때마다 새로운 객체가 만들어 졌는데 이렇게 새롭게 만들어진 객체는 고객의 요청 트래픽이 예를들어 초당 100개면 100개의 객체가 생성, 소멸이 되어 메모리 낭비가 심해진다.

이런 해결방안으로 단 하나의 객체만을 생성하고 공유하도록 하는 것이 싱글톤 패턴이다.

하지만 이 싱글톤 패턴은 위 처럼 장점이 분명하지만 단점이 여러개 존재했었는데 이 싱글톤의 문제점을 모두 해결해주면서 장점까지 끌어 갈 수 있는 

싱글톤 컨테이너가 스프링 컨테이너에서 제공해준다.

 

싱글톤컨테이너의 장점

  1. 스프링 컨테이너는 싱글톤 패턴을 적용하지 않아도, 객체 인스턴스를 싱글톤으로 관리한다.
  2. 스프링 컨테이너는 싱글톤 컨테이너 역할을 한다. 이렇게 싱글톤 객체를 생성하고 관리하는 기능을 싱글톤 레지스트리라 한다.
  3. 스프링 컨테이너의 이런 기능 덕분에 싱글톤 패턴의 모든 단점을 해결하면서 하나의 객체를 사용하는 싱글톤을 유지할 수 있다.
  4. 싱글톤 패턴을 위한 코드가 들어가지 않아도 된다.
  5. DIP, OCP, 테스트, private 생성자로 부터 자유롭게 싱글톤사용이 가능하다.

라는 장점이 있다.

 

 

댓글