sina.dev 2022. 2. 26. 13:37
728x90

목차

  1. 싱글톤 패턴이란
  2. 싱글톤 패턴 사용 이유
  3. 싱글톤 패턴 문제

 


1. 싱글톤 패턴이란

객체의 인스턴스가 오직 1개만 생성되는 패턴을 의미한다. 애플리케이션 실행 시 최초 1번만 올라가고, 더 이상 객체가 올라가지 않을 때 사용하는 패턴을 말한다.

스프링이나 스프링부트에서 Bean 어노테이션을 이용해 싱글톤 패턴으로 객체를 선언한다.

 

 


2. 싱글톤 패턴 사용 이유

  • 최초 한번의 new 연산자를 통해 고정된 메모리 영역을 사용한다.
  • 해당 객체에만 접근하기 때문에 메모리 영역의 낭비를 방지한다.
  • 다른 클래스 간에 데이터 공유가 쉽다.
  • 전역으로 인스턴스가 관리된다.
  • 싱글톤 패턴 사용 : DBCP (Database Connection Pool), 로그

 

static 선언자를 이용한 싱글톤 패턴

public class TestSingleton {

    private static TestSingleton instance = new TestSingleton();

    private TestSingleton() {
        // 생성자는 외부에서 호출못하게 private 으로 지정해야 한다.
    }

    public static TestSingleton getInstance() {
        return instance;
    }

    public void call() {
        System.out.println("hi, there");
    }
}

 

@Bean 어노테이션을 이용한 패턴

@Bean
public class TestSingleton {
    // 클래스 내부 구현 
}

 

 


3. 싱글톤 패턴 문제

  • 동시성 문제가 발생한다.
  • 동시성 문제 해결을 위한 syncronized 키워드를 사용해야 하는데, syncronized 키워드 사용은 비용 발생한다.
  • 테스트 진행 시 인스턴스의 상태를 초기화해야 한다.
  • new 키워드를 직접 사용하여 클래스 안에서 객체를 생성한다.
  • 유연성이 떨어진다.