스프링 IoC(Inversion of Control) Container에 의해서 객체가 관리되고 애플리케이션의 핵심을 이루는 객체들을 Spring Bean이라고 한다. Bean은 Spring Container에 의해서 인스턴스화되어 조립되고 관리된다.
Scope의 뜻대로 빈이 존재할 수 있는 범위를 말한다. 스프링 Bean은 기본 Scope으로 Singleton Scope가 적용된다.
Spring Scope 경우 defualt로 singleton 전략을 사용하기 때문에 해당 Bean에 대한 요청을 하나의 인스턴스로 공유하는 부분을 항상 생각하며, 절대로 bean 자체에 필드를 생성하여 데이터를 공유하거나 요청마다의 값을 지정하는 행위는 하지 않아야 한다. 각 Thread 마다의 데이터 공유가 필요시에는 ThreadLocal또는 Parameter을 사용하여 값을 반환하도록 하는 것이 올바르게 Singleton 패턴을 사용하는 것이라고 생각한다.