..

Singleton 패턴: 효율적인 자원 관리의 시작

1. Singleton 패턴이란?

싱글톤(Singleton) 패턴은 특정 클래스의 인스턴스를 애플리케이션 전체에서 오직 단 하나만 생성하여 공유하는 디자인 패턴입니다.

2. 왜 사용하는가? (Spring과 싱글톤)

Spring Framework는 관리하는 모든 빈(Bean)들을 기본적으로 싱글톤으로 생성합니다.

  • 자원 절약: 대규모 엔터프라이즈 시스템에서는 수많은 요청이 동시에 발생합니다. 요청마다 새로운 객체를 생성하고 버린다면 메모리 낭비와 성능 저하가 극심할 것입니다.
  • 공유성: 하나의 인스턴스를 여러 스레드가 공유하여 사용함으로써 효율적으로 시스템 자원을 관리할 수 있습니다.

3. 자바 구현 예시

public class SingletonService {
    // 1. static 영역에 인스턴스를 미리 한 개 생성
    private static final SingletonService instance = new SingletonService();

    // 2. 외부에서 생성자를 호출하지 못하도록 private으로 선언
    private SingletonService() {}

    // 3. 인스턴스가 필요하면 이 메서드를 통해서만 조회 가능
    public static SingletonService getInstance() {
        return instance;
    }
}

싱글톤 객체는 여러 스레드가 공유하므로, 객체 내부에 상태값을 가지지 않도록(Stateless) 설계하는 것이 매우 중요합니다. 가급적 읽기 전용으로 유지하거나 지역 변수만을 활용해야 멀티스레드 환경에서 안전합니다.