카테고리 없음

GoF 패턴 - singleton 싱글톤 패턴 / 스프링에서 싱글톤 패턴 만들어보기

minjava 2025. 9. 2. 19:23

뭐임?

- Singleton : 특정 클래스의 인스턴스가 오직 하나만 만들어지고, 그 인스턴스에 전역적으로 접근할 수 있도록 하는 패턴

- 즉, 프로그램 전체에서 공유되는 단일 객체이다.

- 단 하나의 객체로서 클라이언트의 요청을 처리함

 

왜씀?

- 메모리 절약(객체 여러번 생성 X) / 데이터 일관성 유지 / 객체 관리 단순화

 

동작 방식?

- 생성자를 private 으로 막아 외부에서 new 키워드로 인스턴스를 만들지 못하게 함.

- 클래스 내부에서 자기 자신을 static 변수로 하나 생성해 둠.

- getInstance() 같은 static 메서드를 통해 단일 객체에 접근함.

 

 

- : private

+ : public

밑줄 : static

 

 

 

스프링에서 싱글톤 만들어보기

ApplicationContext (스프링 컨테이너)가 spring-context.xml을 읽고 EmpService 빈을 하나만 생성함.

이후 context.getBean()을 통해 꺼내 쓰면 항상 그 하나 뿐인 객체가 리턴됨.

그래서 "클라이언트 요청이 들어올 때마다 같은 객체로 처리한다"는 점에서 싱글톤 패턴과 같은 효과를 얻는 것임.