싱글톤은 static을 응용한 것인데, 프로그램 내에서 단 하나의 객체를 생성하도록 강제하는 패턴이다. 클래스 내부에 private static으로 유일한 인스턴스를 생성하고, 생성자를 private으로 막아놓아 외부에서 생성할 수가 없게 한다. 이후 값을 참조하는 메소드를 public으로 만들어 static 인스턴스를 반환해 쓸 수 있도록 한다.
그런데 여기까지 보면 싱글톤이 없는 static과 명확한 차이점이 두드러지지 않는다
이러한 단점을 해결하기 위해서 Spring에서는 싱글톤을 클래스로더가 아닌 싱글톤 컨테이너를 활용해 관리한다(Java의 싱글톤 관리주체는 클래스 로더, Spring의 싱글톤 관리 주체는 싱글톤 컨테이너). 스프링 컨테이너의 싱글톤 관리에 대한 내용은 다음 글에서 포스팅 하겠다.
https://ifcontinue.tistory.com/2?category=695943
https://100100e.tistory.com/339
https://enterkey.tistory.com/300
https://judekim.tistory.com/91
https://ksr930.tistory.com/274