[Spring] Singleton 패턴과 문제점

2023. 9. 21. 17:29Spring

Singleton 패턴을 활용하면 클래스 당 하나의 객체만 공유하도록 만들어 메모리 부담을 줄일 수 있다.

package hello.core.singleton;

public class SingletonService {

    private static final SingletonService instance = new SingletonService();

    public static SingletonService getInstance() {
        return instance;
    }

    private SingletonService(){
    }

    public void logic() {
        System.out.println("싱글톤 객체 로직 호출");
    }

}

하지만 다양한 문제도 가진다.

1. 싱글톤 패턴 구현에는 추가적인 코드가 들어간다.

2. 생성자를 이용할 수 없기 때문에 클라이언트 코드에서 직접 생성을 해주어야 하는데 이렇게 되면 DIP를 위반하게 되고 OCP를 위반하게 된다.

3. 생성자를 이용할 수 없어 new로 여러 객체를 만들지 못해 유연하지 못하기 때문에 테스트하기 어렵다.

4. private 생성자로 자식 클래스를 만들기에는 제약이 있다. 왜냐하면 부모의 생성자인 super()를 사용하지 못하기 때문이다. 

 

이러한 싱글톤 패턴의 문제점은 해결하면서 장점을 살린게 스프링 컨테이너 또는 싱글톤 컨테이너이다.

 

Reference


https://www.inflearn.com/course/lecture?courseSlug=%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8&unitId=55362 

 

학습 페이지

 

www.inflearn.com