물론 타입만 지정해서는 더 이상 컨텍스트에서 빈을 가져올 수 없다. 그렇게 하면 스프링이 선언한 인스턴스 중 어떤 것을 참조할지 짐작할 수 없기 때문에 예외가 발생한다. 다음 예제를 보자. 이런 코드를 실행하면 스프링에서 사용하려는 인스턴스를 정확히 지정해야 한다고 경고하는 예외가 발생할 것이다.
예제 2-14 타입으로 Parrot 인스턴스 참조하기
public class Main {
public static void main(String[] args) {
var context =
new AnnotationConfigApplicationContext(ProjectConfig.class);
Parrot p = context.getBean(Parrot.class); ← 이 줄에서 예외가 발생하는 이유는 스프링은 사용자가 참조하는 Parrot 인스턴스 세 개 중 어떤 것을 참조하는지 추정할 수 없기 때문이다.
System.out.println(p.getName());
}
}