애플리케이션이 시작될 때 어떤 클래스가 최초 한번만 메모리를 할당하고(Static) 그 메모리에 인스턴스를 만들어 사용하는 디자인패턴.
위 그림과 같이 동일한 서비스를 요청할 때, 요청한 만큼 객체가 계속 생성되고, JVM 메모리에 객체가 계속 쌓이게 됩니다.
이러한 문제를 해결하기 위한 디자인 패턴이 싱글톤 패턴입니다.
public class SingleTornClass {
private static final SingleTornClass instance = new SingleTornClass();
private SingleTornClass () {}
public static SingleTornClass getInstance() {
return instance;
}
public void doSomething() {
System.out.println("싱글톤 테스트!");
}
}
static 영역에 미리 객체를 생성하고 재생성이 불가하게 생성자를 private 으로 만든다.
@SpringBootTest
public class SingleTornTest {
@Test
public void test() throws Exception {
SingleTornClass instance1 = SingleTornClass.getInstance();
SingleTornClass instance2 = SingleTornClass.getInstance();
Assertions.assertThat(instance1).isEqualTo(instance2);
}
}
이 객체는 getInstance() 로만 접근이 가능하다
같은 객체임을 확인 할 수 있다.