싱글턴이란 인스턴스를 오직 하나만 생성할 수 있는 클래스를 말한다. 스프링에서 빈을 관리하는 방식이 싱글턴이다. 그런데 클래스를 싱글턴으로 만들면 이를 사용하는 클라이언트가 테스트하기가 어려워질 수 있다. 타입을 인터페이스로 정의한 다음 그 인터페이스를 구현해서 만든 싱글턴이 아니라면 싱글턴 인스턴스를 가짜(mock) 구현으로 대체할 수 없기 때문이다. 싱글턴을 만드는 방식을 보통 둘 중 하나이다. 두 방식 모두 생성자는 private으로 감춰두고 유일한 인스턴스에 접근할 수 있는 수단으로 public static 멤버를 하나 마련해둔다. 우선 public static 멤버가 final 필드인 방식을 살펴보자. // 코드 3-1 public static final 필드 방식의 싱글턴 (23쪽) publi..