@Test
@DisplayName("빈 이름으로 조회")
void findBeanByName() {
MemberService memberService = ac.getBean("memberService", MemberService.class);
assertThat(memberService).isInstanceOf(MemberServiceImpl.class);
}
이름없이 타입만으로 조회하고 싶을 때, 이름만 제거하고 타입명만 입력하여 사용하면 된다.
@Test
@DisplayName("구체 타입으로 조회")
void findBeanByName2() {
// 구현에 의존함
MemberService memberService = ac.getBean("memberService", MemberServiceImpl.class);
assertThat(memberService).isInstanceOf(MemberServiceImpl.class);
}
NoUniqueBeanDefinitionException.class
@Test
@DisplayName("타입으로 조회시 같은 타입이 둘 이상 있으면, 빈 이름을 지정함")
void findBeanByName() {
// MemberRepository에서 2가지 메서드가 있으므로 혼동되지 않도록 메서드명을 지정하여 사용
MemberRepository memberRepository = ac.getBean("memberRepository1", MemberRepository.class);
assertThat(memberRepository).isInstanceOf(MemberRepository.class);
}
@Test
@DisplayName("특정 타입을 모두 조회")
void findAllBeanByType() {
Map<String, MemberRepository> beansOfType = ac.getBeansOfType(MemberRepository.class);
assertThat(beansOfType.size()).isEqualTo(2);
}