[Spring] Singleton, Spring Container

Manx·2022년 4월 29일
0

spring

목록 보기
7/24


Singleton : GoF(Gang of Four) 디자인 패턴의 생성 패턴 5가지 중 하나

  • 하나의 객체를 생성하면 생성된 객체를 어디서든 참조할 수 있지만, 여러 프로세스가 동시에 참조할 수는 없다.
  • 클래스 내에서 인스턴스가 하나뿐임을 보장하며, 불필요한 메모리 낭비를 최소화할 수 있다.

Config를 통해 객체를 관리하면, 호출할 때마다 객체가 새로 생성된다.
웹 애플리케이션 특성상 요청을 동시 다발적으로 많이 처리해야 하는데 이때마다 객체를 새로 생성하기에는 메모리 낭비가 매우 심하다.
이를 해결하기 위해 싱글톤 패턴을 사용하는 것이다.

싱글톤 패턴 구현

public class SingletonService {

    private static final SingletonService instance = new SingletonService();

    public static SingletonService getInstance() {
        return instance;
    }
	
    // private 생성자로 외부에서 객체를 생성하는 것을 방지하였다.
    private SingletonService() {
    }
 }

그러나 싱글톤 패턴의 문제점으로
클래스 생성 시 마다 이렇게 구현할 수는 없는 노릇이다.
private 생성자로 자식 클래스를 만들기 어렵고, 결론적으로 유연성이 떨어진다.

그러나 Spring에서는 이런 Singleton의 단점을 모두 보완하면서 객체를 Singleton으로 관리해주는 Spring Container를 제공해준다.


'스프링 핵심 원리 기본편 - 김영한 강사님' 의 강의 내용을 정리한 것 입니다.

profile
백엔드 개발자

0개의 댓글