들어가기 앞서 싱글톤 스코프의 싱글톤이 무엇인지 알아보자.
싱글톤이란 객체를 공유한다의 의미로 받아드렸다.
만약 메인 스피커의 볼륨을 조절하는 클래스를 만들었다면, 해당 객체를 만들고 볼류을 조절해야하지만, 객체가 계속해서 만들어지면 메인스피커의 본질이 흐려진다. 메인스프커가 여러개 생성되는 것이니까. 그래서 싱글톤을 사용하는데 싱글톤은 객체를 공유하여(주솟값이 동일한 객체) 모든 결과값을 공유하는 것이다.
사용이유 -> 수 많은 객체를 생성하게 되면 메모리 낭비와 효율성이 떨어지게 된다.
클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴이다.
싱글턴은 해당 빈의 인스턴스를 오직 하나만 생성해서 사용하는 것을 의미하고 단일 인스턴스는 싱글톤 빈의 캐시에 저장된다. 이름이 정해진 빈에 대한 모든 요청과 참조는 캐시된 개체를 반환한다. 또한 스프링 컨테이너의 기본값은 싱글톤이다.
중요한 점은 싱글톤 스코프의 스프링 빈은 여러번 호출해도 모두 같은 인스턴스 참조 주소값을 가진다.
이렇게 공부했지만, 싱글톤 패턴의 문제점이 있어서 스프링에서는 싱글톤 패턴을 사용하지않는다.
하지만, 정말 안 쓰지않는다. 단지 싱글톤 패턴 문제를 스프링의 싱글톤 컨테이너가 해결해서 사용한다.
싱글톤 컨테이너는 객체 인스턴스를 싱글톤으로 관리하는데