5.2.1 프로토타입 빈의 동작 방식
앱에서 프로토타입 빈을 어디에 사용할지 논의하기 전에 먼저 프로토타입 빈을 관리하는 스프링 동작을 파악해 보자. 보다시피 아이디어는 간단하다. 프로토타입 스코프의 빈에 대한 참조를 요청할 때마다 스프링은 새로운 객체 인스턴스를 생성한다. 프로토타입 빈의 경우 스프링은 객체 인스턴스를 직접 생성하고 관리하지 않는다. 프레임워크는 객체의 타입을 관리하고 빈에 대한 참조를 요청받을 때마다 새로운 인스턴스를 생성한다. 그림 5-6에서는 빈을 커피 나무로 표현했다(즉, 빈을 요청할 때마다 새 인스턴스를 얻는다). 여전히 ‘빈(원두)’ 용어를 사용하지만, 프로토타입 빈에 대한 스프링 동작을 빠르게 이해하고 기억할 수 있도록 돕고자 커피 나무라는 용어를 사용했다.
다음 그림에서 볼 수 있듯이, 빈의 스코프를 변경하려면 @Scope라는 새 애너테이션을 사용해야 한다. @Bean 애너테이션 방식을 사용하여 빈을 생성할 때, @Scope는 빈을 선언하는 메서드에 대해 @Bean과 함께 사용된다. 스테레오타입 애너테이션을 사용하여 빈을 선언할 때는 빈을 선언하는 클래스 위에 @Scope 애너테이션과 스테레오타입 애너테이션을 사용한다.