의존관계 자동 주입 - 조회 빈이 2개 이상일때

황준하·2023년 8월 10일

Spring 기본

목록 보기
29/38
post-thumbnail

조회 빈이 2개 이상일때

@Autowired는 타입으로 조회한다.

스프링 빈 조회에서 학습했듯이 타입으로 조회하면 빈이 2개 이상일때 문제가 발생한다.

DiscountPolicy 하위 타입인 FixDicountPolicy, RateDiscountPolicy 둘다 스프링 빈으로 선언해보면

@Component
public class FixDiscountPolicy implements DiscountPolicy{

Log

NoUniqueBeanDefinitionException:
...
expected single matching bean but found 2: fixDiscountPolicy,rateDiscountPolicy

NoUniqueBeanDefinitionException이 발생한다.

이때, 하위 타입으로 지정할 수 도 있지만, 하위 타입으로 지정하는 것은 DIP를 위배하고 유연성이 떨어진다. 그리고 이름만 다르고, 완전히 똑같은 타입의 스프링 빈이 2개 있을 때 해결이 안된다.

스프링 빈을 수동 등록해서 문제를 해결해도 되지만, 의존 관계 자동 주입에서 해결하는 방법이 있다.

0개의 댓글