앞서 말한 싱글톤에서 정리를 하자면
먼저 스프링은 기업용 온라인 서비스 기술을 방향으로 지원하기 위해 만들어지고 개발되어왔다. 그렇기에 대부분이 웹 애플리케이션인데, 싱글톤사용전에는 웹 애플리케이션은 보통 여러 클라이언트들에게 동시 요청이 올 때마다 새로운 객체를 생성 소멸 했었다.
순수한 DI컨테이너는 요청을 할 때마다 새로운 객체가 만들어 졌는데 이렇게 새롭게 만들어진 객체는 고객의 요청 트래픽이 예를들어 초당 100개면 100개의 객체가 생성, 소멸이 되어 메모리 낭비가 심해진다.
이런 해결방안으로 단 하나의 객체만을 생성하고 공유하도록 하는 것이 싱글톤 패턴이다.
하지만 이 싱글톤 패턴은 위 처럼 장점이 분명하지만 단점이 여러개 존재했었는데 이 싱글톤의 문제점을 모두 해결해주면서 장점까지 끌어 갈 수 있는
싱글톤 컨테이너가 스프링 컨테이너에서 제공해준다.
싱글톤컨테이너의 장점
- 스프링 컨테이너는 싱글톤 패턴을 적용하지 않아도, 객체 인스턴스를 싱글톤으로 관리한다.
- 스프링 컨테이너는 싱글톤 컨테이너 역할을 한다. 이렇게 싱글톤 객체를 생성하고 관리하는 기능을 싱글톤 레지스트리라 한다.
- 스프링 컨테이너의 이런 기능 덕분에 싱글톤 패턴의 모든 단점을 해결하면서 하나의 객체를 사용하는 싱글톤을 유지할 수 있다.
- 싱글톤 패턴을 위한 코드가 들어가지 않아도 된다.
- DIP, OCP, 테스트, private 생성자로 부터 자유롭게 싱글톤사용이 가능하다.
라는 장점이 있다.
'FrameWork > Spring' 카테고리의 다른 글
싱글톤 컨테이너와 싱글톤레지스트리에 대한 고찰 (0) | 2023.07.21 |
---|---|
웹 애플리케이션과 싱글톤 (0) | 2023.07.19 |
@RequiredArgsConstructor (0) | 2023.07.16 |
Spring은 어떻게 다양한 설정 형식을 지원할까?BeanDefinition (0) | 2023.07.13 |
JPA (작성중) (0) | 2023.07.12 |
댓글