스프링 기본 - 조회 빈이 2개 이상 - 문제
반응형
조회 빈이 2개 이상 - 문제
@Autowired는 타입(Type)으로 조회한다.
타입으로 조회하기 때문에, 마치 다음 코드와 유사하게 동작한다. (실제로는 더 많은 기능을 제공한다.)
ac.getBean(DiscountPolicy.class)
스프링 빈 조회에서 학습했듯이 타입으로 조회하면 선택된 빈이 2개 이상일 때 문제가 발생한다.
DiscountPolicy의 하위 타입인 FixDiscountPolicy, RateDiscountPolicy 둘다 스프링 빈으로 선언해보자.
그리고나서 test를 돌려보면,
NoUniqueBeanDefinitionException 오류가 발생한다
오류메시지가 친절하게도 하나의 빈을 기대했는데 fixDiscountPolicy, rateDiscountPolicy 2개가 발견되었다고 알려준다.
이 부분에서 자동 의존관계 주입을 할 때, 스프링빈이 하나가 주입되야 하는데, 2개가 있어서 오류가 난 것이다.
이때 하위 타입으로 지정할 수 도 있지만, 하위 타입으로 지정하는 것은 DIP를 위배하고 유연성이 떨어진다.
그리고 이름만 다르고, 완전히 똑같은 타입의 스프링 빈이 2개 있을 때 해결이 안된다.
스프링 빈을 수동 등록해서 문제를 해결해도 되지만, 의존 관계 자동 주입에서 해결하는 여러 방법이 있다.
반응형
'Spring' 카테고리의 다른 글
스프링 기본 - 애노테이션 직접 만들기 (0) | 2022.06.05 |
---|---|
스프링 기본 - @Autowired 필드 명, @Qualifier, @Primary (0) | 2022.06.03 |
스프링 기본 - 롬복과 최신 트랜드 (0) | 2022.06.02 |
스프링 기본 - 생성자 주입을 선택해라! (0) | 2022.06.02 |
스프링 기본 - 옵션 처리 (0) | 2022.06.02 |
댓글
이 글 공유하기
다른 글
-
스프링 기본 - 애노테이션 직접 만들기
스프링 기본 - 애노테이션 직접 만들기
2022.06.05 -
스프링 기본 - @Autowired 필드 명, @Qualifier, @Primary
스프링 기본 - @Autowired 필드 명, @Qualifier, @Primary
2022.06.03 -
스프링 기본 - 롬복과 최신 트랜드
스프링 기본 - 롬복과 최신 트랜드
2022.06.02 -
스프링 기본 - 생성자 주입을 선택해라!
스프링 기본 - 생성자 주입을 선택해라!
2022.06.02