@Test
@DisplayName("타입으로 조회시 같은 타입이 둘 이상 있으면, 중복 오류가 발생한다")
void findBeanByTypeDuplicate(){
//MemberRepository bean = ac.getBean(MemberRepository.class);
//예외 터지는 것이 성공하는 로직이다!
assertThrows(NoUniqueBeanDefinitionException.class,//발생할 에러
() -> ac.getBean(MemberRepository.class));//실행되는 로직
}
void findBeanByName(){
MemberRepository memberRepository
= ac.getBean("memberRepository1",MemberRepository.class);
assertThat(memberRepository).isInstanceOf(MemberRepository.class);
}
AnnotationConfigApplicationContext.getBeansOfType()을 사용하면 해당 타입의 모든 빈을 조회할 수 있다.
=>Map(Key, Value) 으로 반환한다!
@Test
@DisplayName("특정 타입을 모두 조회하기")
void findAllBeanByType(){
Map<String, MemberRepository> beansOfType = ac.getBeansOfType(MemberRepository.class);
for (String key : beansOfType.keySet()) {
System.out.println("key = " + key + "value = "+ beansOfType.get(key)) ;
}
System.out.println("beansOfType = " + beansOfType);
assertThat(beansOfType.size()).isEqualTo(2);
}
static class를 사용하는 이유 : 클래스 안에 클래스를 만들 때 static class를 사용한다.
이유는 그 클래스 내부에서만 사용하고자 하기 때문이다!