5.1.2 실제 시나리오의 싱글톤 빈
지금까지 스프링이 싱글톤 빈을 관리하는 방법을 설명했다. 이제는 싱글톤 빈으로 작업할 때 주의해야 할 사항을 논의할 차례다. 먼저 싱글톤 빈을 사용해야 하거나 사용하지 말아야 하는 몇 가지 시나리오를 떠올려 보자.
싱글톤 빈의 스코프는 앱의 여러 컴포넌트가 하나의 객체 인스턴스를 공유할 수 있다고 가정하기 때문에 가장 중요하게 고려해야 할 점은 이런 빈이 불변(immutable)이어야 한다는 것이다. 대부분 실제 앱은 여러 스레드(예 모든 웹 앱)로 작업들을 실행한다. 이런 시나리오에서는 여러 스레드가 동일한 객체 인스턴스를 공유한다. 이런 스레드가 인스턴스를 변경하면 경쟁 상태(race condition) 시나리오가 발생한다(그림 5-5).