싱글톤 레지스트리
2024. 7. 3. 13:43ㆍ토비의 스프링 6
싱글톤 패턴은 GoF가 소개한 디자인 패턴 중의 하나다. 디자인 패턴 중에서 가장 자주 활용되는 패턴 이기도 하지만 가장 많은 비판을 받는 패턴이기도 하다. 심지어 디자인 책을 쓴 GoF 멤버조차도 싱글 톤 패턴은 매우 조심해서 사용해야 하거나 피해야 할 패턴이라고 말하기도 한다. 싱글톤 패턴은 어떤 클래스를 애플리케이션 내에서 제한된 인스턴스 개수, 이름처럼 주로 하나만 존재하도록 강제하는 패턴이다. 이렇게 하나만 만들어지는 클래스의 오브젝트는 애플리케이션 내에서 전역적으로 접근이 가능하다. 단일 오브젝트만 존재해야 하고, 이를 애플리케이션의 여러 곳에서 공유하는 경우에 주로 사용한다.
싱글톤 패턴은 다음과 같은 단점을 가진다.
- private 생성자를 갖고있기 때문에 상속할 수 없다.
- 싱글톤은 테스트하기 힘들다.
- 서버 환경에서는 싱글톤이 하나만 만들어지는 것을 보장하지 못한다.
- 싱글톤의 사용은 전역 상태를 만들 수 있기 때문에 바람직하지 못하다.
스프링은 하나의 오브젝트만 만들어져야 한다는 필요를 충족하면서도 싱글톤 패턴을 사용해서 만들었을때의 단점을 가지지 않도록 컨테이너 레벨에서 하나의 오브젝트만 만들어지는 것을 보장하는 기능을 제공한다. 이렇게 싱글톤 오브젝트를 만들고 관리하는 스프링 컨테이너를 싱글톤을 등록하고 관리한다는 의미에서 싱글톤 레지스트리라고 부르기도 한다.
스프링 빈이 생성되고 적용되는 범위를 빈의 스코프(scope)라고 부른다. 스프링은 기본적으로 빈 오브젝트가 싱글톤 스코프를 가지도록 한다. 필요에 따라 여러개의 빈 오브젝트가 만들어지도록 할 수도 있다.
'토비의 스프링 6' 카테고리의 다른 글
| 의존성 역전 원칙(Dependency Inversion Principle) (0) | 2024.07.04 |
|---|---|
| DI와 디자인 패턴 (0) | 2024.07.04 |
| 구성정보를 가져오는 다른 방법 (0) | 2024.07.03 |
| 스프링 컨테이너와 의존관계 주입 (0) | 2024.07.03 |
| 원칙과 패턴 (0) | 2024.07.03 |