이번에는 조회 빈이 2개 이상인 문제에 대하여 공부하였다.

 

@Autowired는 기본적으로 타입으로 조회를 한다.

 

    @Autowired
	private DiscountPolicy discountPolicy

 

타입으로 조회하기 때문에, 마치 다음 코드와 유사하게 동작한다.

ac.getBean(DiscountPolicy.class)

 

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

 

기존에  RateDiscountPolicy에 @Component를 붙이고

FixDiscountPolicy는 붙이지 않았다 이제 FixDiscountPolicy에도 붙여주면? 

 

NoUniqueBeanDefinitionException 오류가 발생한다.!

 

하나의 빈을 기대했지만 RateDiscountPolicy,FixDiscountPolicy 2개가 발생했다고 알려준다.

 

이때 하위타입을 지정할 수 도 있지만, 하위 타입으로 지정하는것은 DIP를 위반하고 유연성이 떨어진다.

이름만 다르고 완전히 같은 타입의 스프링 빈이 2개 있을때 해결이 안된다.

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

 

 

+ Recent posts