Spring에서 등장하는 또 다른 개념은 빈 스코프이다.
Scope, 즉 범위라는 뜻이며 빈이 존재할 수 있는 범위이다.
빈 스코프에는 몇가지 종류가 있다.
간단히 아래 코드부터 보자면,
@Scope
가 사용된 클래스와 그렇지 않은 클래스 두가지를 작성하고 각각 3번씩 호출해보았다.
콘솔창에 결과는 위와 같다.
Normalclass()의 경우, 같은 해시코드가 출력된다.
그러나,PrototypeClass()는 호출할 때마다 해시코드가 달라진다.
기본적으로 모든 Bean은 singleton이다.
하나의 Bean에 대해 Spring 컨테이너 내에 단 하나의 객체만 존재해야한다는 것이다.
모든 요청에 대해 새로운 객체를 생성하는 것이다.
사용은 위 사진에 나와있듯
@Scope(value = configuarableBeanFactory.SCOPE_PROTOTYPE)
의 형식이다.
Bean 참조가 이루어질 때마다 새로운 인스턴스가 생성된다.
따라서, 생성되는 인스턴스는 여러개가 될 수 있다.
웹에서 사용되는 스코프도 있는데, 크게 다루진 않는다.