인프런 커뮤니티 질문&답변

재리님의 프로필 이미지
재리

작성한 질문수

스프링 핵심 원리 - 기본편

@Autowired 필드 명, @Qualifier, @Primary

조회 bean이 2개 이상인 경우 발생하는 문제에서 하위 타입으로 지정한다는 게 어떤 의미인가요...?

작성

·

272

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
여기에 질문 내용을 남겨주세요.
 
DiscountPolicy의 두 구현클래스인 RateDiscountPolicy와 FixDiscountPolicy가 모두 @Component로 등록이 돼서 DiscountPolicy를 의존관계 자동 주입할 때 NoUniqueDefinitionException오류가 나는 거 까지는 이해가 됩니다.
허나 강의자료 110p에서 이를 해결하기 위한 방법으로 "하위 타입으로 지정할 수 있지만"이라는 부분이 이해가 잘 가지 않습니다... 대체 어떤 클래스를 어느 클래스의 하위 타입으로 지정하면 해결이 되는지 설명 부탁드립니다.

답변 1

0

안녕하세요. 재리님, 공식 서포터즈 David입니다.

@Autowired

public Foo(DiscountPolicy discountPolicy)

이런 상황에서 FixDiscountPolicy, RateDiscountPolicy 빈 2가지가 존재하기 때문에 예외가 발생합니다.

하위 타입으로 지정한다는 말은 Foo 클래스의 생성자 매개변수의 타입인 DiscountPolicy를 FixDiscountPolicy 또는 RateDiscountPolicy로 변경한다는 말입니다.

다만, 이렇게 되면 구현체의 타입(FixDiscountPolicy, RateDiscountPolicy)이 지정되므로 유연한 설계와는 멀어집니다.

감사합니다.

재리님의 프로필 이미지
재리

작성한 질문수

질문하기