Spring Singleton (싱글톤)

김현찬·2025년 5월 16일

싱글톤이란?

프로그램 전체에서 단 하나의 객체만 생성하여 재사용하는 디자인 패턴이다.

(Spring에서는 기본적으로 모든 @Bean, @Component, @Service 객체들이 자동으로 싱글톤으로 관리된다.)

Singleton패턴은 Singleton인터페이스를 구현받아 사용할 수 있다.(implements Singleton)

왜 싱글톤을 사용할까?

  • 메모리 낭비 방지 (객체를 매번 새로 만들 경우 메모리의 낭비가 발생된다.)
  • 동일한 객체 상태를 여러 컴포넌트가 공유할 수 있다. (똑같은 객체를 재사용하기 때문에 하나의 객체를 공유해서 사용한다.)

위와 같은 이유로 싱글톤을 사용한다.

싱글톤 패턴 주의사항

싱글톤 객체는 상태를 공유하므로 세터와 같이 필드 변경이 가능할 경우 다음과 같은 문제가 생긴다.

위 코드는 세터를 이용하여 클라이언트 1과 2가 각각 값을 할당하고, 클라이언트 1이 다시 조회하는 코드이다.

실행 결과

하나의 객체를 공유하므로 클라이언트 1이 설정한 값은 클라이언트 2가 설정한 값으로 덮어씌어진다.

따라서 싱글톤 객체는 항상 stateless하게 설계하는 것이 좋다.

0개의 댓글