우리는 CommentProcessor를 스프링 컨텍스트의 빈으로 만든다. 하지만 싱글톤 스코프로 정의할 수 있을까? 그렇지 않다. 이 빈을 싱글톤으로 정의하고 여러 스레드가 이 빈을 동시에 사용하면 5.1.2절에서 설명한 것처럼 경쟁 상태(race condition)에 빠지기 때문이다. 어떤 스레드에서 어떤 댓글을 제공했는지, 댓글이 올바르게 처리되었는지 알 수가 없다. 이 시나리오에서는 각 메서드 호출마다 독립된 CommentProcessor 객체 인스턴스를 얻길 원한다. 다음 코드에 표시된 것처럼 CommentProcessor 클래스를 프로토타입 빈으로 변경할 수 있다.
@Component
@Scope(BeanDefinition.SCOPE_PROTOTYPE)
public class CommentProcessor {
@Autowired
private CommentRepository commentRepository;
// 코드 생략
}