싱글톤 패턴(Singleton Pattern)

전현진·2025년 3월 27일

Spring

목록 보기
6/14

싱글톤 패턴(Singleton Pattern)

클래스의 인스턴스가 오직 하나만 생성되도록 보장하는 디자인 패턴이다.

  • 글톤 패턴의 등장

    • Web Application은 불특정 다수의 고객이 동시에 많은 요청을 보낸다.

      • 요청을 할 때 마다 객체를 새로 생성되고 처리가 완료되면 소멸된다.
      • 메모리 낭비가 아주 심하다.
  • 싱글톤 패턴 적용

    • 객체 인스턴스가 하나만 생성되고 생성된 인스턴스만 사용하도록 만든다.

      • 객체가 한번만 생성되어 리소스를 절약할 수 있다.
  • 싱글톤 패턴의 문제점

    • 싱글톤 패턴을 구현하기 위한 코드의 양이 많다.
    • 구현 클래스에 의존해야 한다.(DIP, OCP 위반)
    • 유연성이 떨어져서 안티패턴으로 불리기도 한다.
  • Spring의 싱글톤 컨테이너

    • Spring은 Web Application을 만들 때 주로 사용된다.
    • Spring Container는 싱글톤 패턴의 문제점들을 해결하면서 객체를 싱글톤으로 관리한다.
    • Spring Bean은 싱글톤으로 관리되는 객체이다.

싱글톤 패턴의 주의점

객체의 인스턴스를 하나만 생성하여 공유하는 싱글톤 패턴의 객체는 상태를 유지(stateful)하면 안된다.

  • 상태 유지(stateful)의 문제점
    • 데이터의 불일치나 동시성 문제가 발생할 수 있다.
    • Spring Bean은 항상 무상태(stateless)로 설계를 해야한다.
    • 특정 클라이언트에 의존적인 필드가 있거나 변경할 수 있으면 안된다.
profile
안녕하세요

0개의 댓글