글 올린분을 비꼬거나 할 의도는 전혀 없고, 내용자체가 한번 생각해보기 좋아서 찾아봄.
“Default is ‘singleton’. Singletons are most commonly used, and are ideal for multi-threaded service objects. Further scopes, such as ‘request’ or ‘session’…”
“기본값은 ‘singleton’입니다. 싱글톤은 가장 흔히 사용되며, 멀티스레드 서비스 객체에 이상적입니다. ‘request’나 ‘session’과 같은 다른 스코프들도 있습니다.”
“By default, ApplicationContext implementations eagerly create and configure all singleton beans as part of the initialization process. Generally, this pre-instantiation is desirable, because errors in the configuration or surrounding environment are discovered immediately, as opposed to hours or even days later.”
“기본적으로 ApplicationContext는 초기화 과정에서 모든 싱글톤 빈을 미리 생성·설정합니다. 대체로 이 사전 생성은 바람직한데, 설정이나 환경의 오류를 즉시 발견할 수 있기 때문이며, 그렇지 않으면 몇 시간 또는 며칠 뒤에야 드러날 수 있습니다.”
“As a rule, you should use the prototype scope for all stateful beans and the singleton scope for stateless beans.”
“원칙적으로, 상태를 가지는 빈은 prototype, 상태가 없는 빈은 singleton 스코프를 사용해야 합니다.”
GPT한테 관련 내용 긁어 와달래서 찾은 내용이고, 댓글에서와 같이 매번 요청마다 객체를 생성하는 것에 대한 비용이 크다보니 싱글톤이 유리한 것도 맞음.
추가로 싱글톤의 Stateless 한 성격 덕에 객체를 한번 만들어 공유하게 되면 스레드마다 같은 인스턴스를 재활용 할 수 있고, 자연스럽게 멀티스레드 환경에 적합하다고 함.
개인적인 생각인데 상태가 없는 빈을 싱글톤으로 사용하는 게 아닌 싱글톤이기 때문에 상태가 없게 관리하는 게 맞지 않나 싶음
이런 의도로 적은거긴 한데 의도랑 다르게 작성햇나보다 미안
오… 출처가 어디인지 알수있음??
스프링 공홈에 singleton 검색해서 나온것들