지금까지는 @Component annotation 이 붙은 Coach type 의 class 가 하나밖에 없었다.

그렇다면, 만약 여러개가 있었을 경우에 어떤 Bean object 를 inject 해야 할까?

Using Qualifiers

@Qualifiers annotation 을 사용함으로써 문제를 해결할 수 있다. Qualifier 를 통하여 특정 type 에 대한 Bean 들 중에서 특정 이름을 가진 class 만을 qualify, 즉 자격을 주는 것이다.

Qualifiers - Test

우선 Qualifier 를 사용하지 않고 @Component annotation 을 사용하여 추가적인 Bean 을 생성한 이후에 Application 을 실행해보면 다음과 같다. 참고로 Injection 방식을 Constructor Injection 으로 설정하였다.

보면 single bean 이 요구되지만 4개가 발견되었다고 한다. 역시 의도대로 나온 오류이다.

이제 Qualifier 를 사용하여 오류를 수정해보자.

// define a constructor for dependency injection  
@Autowired  
public DemoController(@Qualifier("footballCoach") Coach theCoach) {  
    myCoach = theCoach;  
}

위와 같이 explicit 한 type casting 을 해주는 syntax 처럼 @Qualifier annotation 을 사용해주면 된다. Qualifier 로 지정하고 싶은 Bean 의 class 이름 첫글자는 lower case 로 바꾸어 지정해주면 된다.