본문 바로가기
개발자 랩실/스프링&스프링부트

[Java] 싱글톤 패턴

by sina.dev 2022. 2. 26.
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 키워드를 직접 사용하여 클래스 안에서 객체를 생성한다.
  • 유연성이 떨어진다.

 

 

댓글