싱글톤 패턴

Haechan Kim·2023년 1월 6일
0

Spring

목록 보기
22/68

싱글톤 패턴
클래스의 인스턴스가 딱 1개 만 생성되는 디자인 패턴

  • 객체 인스턴스 2개 이상 생성 막아야 함.

  • private 생성자 사용해 외부에서 임의로 new 사용 막아야 함.

  • 요청 올때마다 객체 생성하는 것이 아니라, 이미 만들어진 객체 공유해 효율적으로 사용.

  • 문제점

  • 코드 많이 소요

  • 클라이언트가 구체 클래스에 의존 -> DIP 위반
    ㄴ 구체 클래스 참조해 getInstance() 호출. 해당 인스턴스 참조 가져와야 함.

싱글톤 컨테이너
스프링 컨테이너는 싱글톤 패턴 적용 안해도, 객체 인스턴스 싱글톤으로 관리.
스프링 컨테이너가 싱글톤 컨테이너 역할 -> 싱글톤 객체 생성/관리하는 기능을 싱글톤 레지스트리라고 함.

싱글톤 방식의 주의점

싱글톤 객체는 전역에서 공유되는 객체 -> 멀티쓰레드 환경에서의 동시성 문제를 해결해야 함.
전역에서 공유 -> 메모리 영역에서 프로세스 전체에서 공유 -> 개별 쓰레드당 할당되는 것이 아님.

공유변수의 동시성 문제
객체 인스턴스 하나만 생성해 공유하는 경우 무상태(stateless)로 설계해야 함.

<참고>
ttps://velog.io/@syleemk/Spring-Core-싱글톤-컨테이너

0개의 댓글