@Primary vs @Qualifier 관련 질문입니다.
백기선님 안녕하세요. 강의를 잘 듣고 있습니다.
강의 중 강사님께서 같은 인터페이스를 구현한 빈이 여러개 있을 경우 주입하는 방법으로 @Primary와 @Qualifier라는 두 개의 어노테이션에 대해 설명해주셨습니다. 그러면서 Type-Safety 때문에 @Primary 어노테이션을 사용하길 권장한다고 말씀해주셨습니다. 이 부분에 대해서 질문이 있습니다.
@Primary 어노테이션을 사용할 경우를 생각해 보았을 때 두 가지 경우가 생각납니다.
1번, 인터페이스를 구현한 클래스가 여러 개이고 등록된 빈이 여러 개이나 실제로는 하나의 빈만 사용할 경우
2번, 인터페이스를 구현한 클래스가 여러 개이고 등록된 빈이 여러 개이며 실제로 여러 개의 빈을 사용할 경우
1번 경우에 대해선 사용하지 않는 클래스를 지워버리거나 최소한 빈으로 등록하지 않는게 맞지 않나 생각합니다.
2번 경우에 대해선 (인스턴스 변수 이름을 맞춰 주입받는 경우를 제외한다면) 어짜피 @Qualifier와 같이 사용할 수 밖에 없지 않나 생각합니다. 그럴 경우 어짜피 @Qualifier를 사용하는 코드에선 Type-Safety가 무너지게 됩니다. @Primary와 @Qualifier를 같이 사용하는 것 vs @Qualifier를 사용하는 것에서 서로 장단점이 있을 것 같습니다. 같이 사용하면 Type-Safety하지 않은 부분을 조금이라도 줄일 수 있다는 장점이 있을 것 같습니다. @Qualifier만 사용한다면 두 개의 어노테이션을 사용하는 것 보다 코드에서 일관성이 생길 것 같습니다. 저는 @Qualifier만 사용하여 일관성을 가져가는게 좋다고 생각하는데 강사님께선 조금이라도 Type-Safety 하지 않는 부분을 줄이는 것 때문에 @Primary 사용을 권하신건지 혹은 제가 알아차리지 못한 다른 이유가 있는 것인지 궁금합니다.
답변을 기다리겠습니다.
감사합니다.