4.2.2 추상화에 대한 여러 구현체 중에서 오토와이어링할 것을 선택
지금까지는 추상화와 함께 DI를 사용할 때 스프링 동작에 중점을 두었다. 하지만 예제에서는 주입이 필요한 각각의 추상화 타입에서 하나의 인스턴스만 추가하는 것을 다루었다.
한 단계 더 나아가 요청된 추상화와 일치하는 인스턴스가 스프링 컨텍스트에 더 많이 있을 때는 어떻게 되는지 살펴보자. 이 시나리오는 실제 프로젝트에서 발생할 수 있으며, 앱이 예상한 대로 작동하려면 이 경우에 대처하는 방법을 알아야 한다.
서로 다른 두 클래스로 생성된 빈이 두 개 있고, 이 두 빈이 CommentNotificationProxy 인터페이스를 구현한다고 가정해 보자(그림 4-9). 다행히 스프링은 3장에서 설명한 빈 선택 메커니즘을 사용한다. 3장에서 스프링 컨텍스트에 동일한 타입의 빈이 두 개 이상 있을 때 이런 빈 중 어떤 빈을 주입할지 스프링에 알려야 한다는 것을 배웠다. 또 다음과 같은 두 가지 접근 방법도 배웠다.
• @Primary 애너테이션으로 구현할 빈 중 하나를 기본값으로 표시한다.
• @Qualifier 애너테이션으로 빈 이름을 지정한 후 DI를 위해 해당 이름으로 참조한다.