- 싱글톤 패턴
- 여러 가지 디자인 패턴 종류 중의 하나, 하나의 클래스 -> 하나의 객체 인스턴스만 가짐 (클래스의 인스턴스가 딱 한 개만 생성되는 것을 보장하는 디자인 패턴)
- 해당 객체가 딱 한 개 생성되고, 생성된 객체 인스턴스를 여러 곳에서 공유하게 만들 수 있음 (여러 번 호출해도 같은 객체 인스턴스를 반환하는 것을 확인 가능)
- 싱글톤 패턴으로 만들어진 클래스의 인스턴스는 전역 인스턴스라서 다른 클래스의 인스턴스들이 데이터를 공유할 수 있음
- 싱글톤 패턴의 단점, 문제점
- 싱글톤 인스턴스를 여러 곳에서 많이 공유할 경우 다른 클래스의 인스턴스 간 의존성이 높아질 위험
- 싱글톤 패턴 구현하는 코드 많이 필요
- 의존 관계에서 클라이언트가 구체 객체에 의존하여 DIP 원칙 위반함
- 의존 관계에서 클라이언트가 구체 객체에 의존하여 OCP 원칙을 위반할 가능성 큼
- 테스트 하기 어렵고, 유연성이 많이 떨어지는 패턴임
- 싱글톤 컨테이너
- 스프링 컨테이너는 싱글톤 패턴의 문제점을 해결하면서 객체 인스턴스롤 싱글톤(1개)로 관리함
- 스프링 컨테이너는 객체 인스턴스를 한 개만 생성하도록 관리하며 이는 곧 싱글톤이므로 싱글톤 컨테이너의 역할을 하는 것이다!! (이 기능 -> "싱글톤 레지스트리"라고 부름)
(1) 우리가 배운 개별 DI 컨테이너
![](https://blog.kakaocdn.net/dn/MNoqx/btsmlm8maZD/qvkYKi9hKKsUg56DBBYLI0/img.png)
(2) 싱글톤 패턴을 적용한 컨테이너: memberService 객체를 1개만 생성하고 여러 명의 클라이언트가 공유하고 있음
![](https://blog.kakaocdn.net/dn/pgKIj/btsml5ywHLF/xDCeHHp3tZkTRiKvbdON60/img.png)
'Java Spring' 카테고리의 다른 글
GoF 디자인 패턴 - SOLID 원칙 이해하기 (0) | 2023.07.05 |
---|---|
스프링 빈 의존 관계 주입 (자동/수동), 빈 스코프는 무엇인가? (0) | 2023.07.03 |
객체 지향 설계 원칙 5가지(SOLID)를 지킨 프로그램 제작 (0) | 2023.05.29 |
스프링 Spring 이란? (김영한 로드맵, 스프링 핵심 원리 기본편) (0) | 2023.05.22 |
JAVA/Spring 에서 어노테이션(@) 이란? - 어노테이션 사용의 중요성 (0) | 2023.05.15 |