스프링 빈 조회

초보개발·2021년 12월 9일
0

Spring

목록 보기
9/37

스프링 빈 조회하기

  • 빈 이름으로 조회
@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);
    }

0개의 댓글