..
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) 설계하는 것이 매우 중요합니다. 가급적 읽기 전용으로 유지하거나 지역 변수만을 활용해야 멀티스레드 환경에서 안전합니다.