작성
·
245
1
스프링 빈 - 동일한 타입이 둘 이상에서 타입으로 조회시 같은 타입이 둘 이상 있으면 중복 오류가 발생한다고 말씀을 하셨는데 이번 강의(스프링 빈 - 상속관계)를 들으니 이전 케이스가 같은 타입으로 조회를 했기에 생겼던 문제인지가 궁금해 졌습니다 예를 들어 코드가 아래와 같은 경우
AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(SameBeanConfig.class);
@Test
@DisplayName("타입으로 조회시 같은 타입이 둘 이상 있으면, 중복 오류가 발생한다.")
void findByBeanTypeDuplicate(){
assertThrows(NoUniqueBeanDefinitionException.class,()->ac.getBean(MemberRepository.class));
}
@Configuration
static class SameBeanConfig{
@Bean
public MemberRepository memberRepository1(){
return new MemoryMemberRepository();
}
@Bean
public MemberRepository memberRepository2(){
return new MemoryMemberRepository();
}
}
위의 코드는 타입으로 빈을 조회할 때 MemberRepository를 줍니다. 이걸 주면 오늘 배운 상속 내용처럼 이걸 구현한 MemoryMemberRepository를 가지고 오게 되는데
이 자식이 2개가 존재하므로 이번 강의 설명처럼 부모 타입으로 조회하였는데 자식 타입이 2개가 나왔으므로 에러가 생긴 케이스 같습니다.
(만약 해당 문제가 싱글톤 컨테이너와 관련이 되어 있는 문제라면 제가 생각한 아래의 구상이 맞는건지 궁금합니다)
그렇다면 "부모 타입으로 조회를 했는데 같은 자식 타입이 여러개 나와서 중복이 된거다"라고 생각하면 될까요??