싱글톤 패턴
싱글톤 패턴은 객체를 딱 한 번만 생성하도록 보장하는 디자인 패턴
- 전역 변수를 사용하여 객체를 저장하고 다른 객체들이 그 객체를 공유
장점
- 공통적인 리소스나 데이터에 대한 중복 생성 및 관리를 방지
- 객체 생성 비용과 자원 소모를 최소화
- 객체 간의 의존성 관리가 용이
주의
- 다수의 클라이언트가 해당 인스턴스에 접근하고 수정할 수 있기 때문에 상태변화를 조심스럽게 관리해야함
- 멀티 스레드 환경에서 동시성 문제가 발생
- 초기화 과정이 복잡하거나 오래 걸리는 경우에는 애플리케이션의 시작 속도가 느려질 수 있음
- 이러한 경우에는 지연 초기화(lazy initialization) 기법을 적용하거나, 필요한 시점에 초기화하는 방법을 사용할 수 있음
Spring과 싱글톤
- 스프링 컨테이너는 곧 싱글톤 컨테이너로써 동작
- 객체가 딱 1개만 생성되고 공유하도록 설계
- 스프링 컨테이너에 특정 Bean 객체 하나가 등록되면, 더 이상 중복되서 여러개가 등록되지 않음