해결 방법을 하나씩 알아보자.
@Autowired 필드 명 매칭@Qualifier → @Qualifier**끼리 매칭 → 빈 이름 매칭@Primary 사용**@Autowired**는 타입 매칭을 시도하고, 이때 여러 빈이 있으면 필드 이름, 파라미터 이름으로 빈 이름을 추가한다.
@Autowired
private DiscounPolicy discountpolicy
@Autowired
private DiscountPolicy rateDiscountPolicy
필드 명이 **rateDiscountPolicy**이므로 정상 주입된다.
필드 명 매칭은 먼저 타입 매칭을 시도하고 그 결과에 여러 빈이 있을 때 추가로 동작하는 기능이다. (전 시간에 FixdiscountPolicy와 RateDiscountPolicy 스프링 빈에 등록함) ex) discountPolicy : fixdiscountPolicy , discountPolicy : rateDiscountPolicy
@Autowired
public OrderServiceImpl(MemberRepository memberRepository, **DiscountPolicy rateDiscountPolicy**) {
this.memberRepository = memberRepository;
**this.discountPolicy = rateDiscountPolicy**
}