스프링 컨테이너에 등록된 bean 정보 가져오기

jaycee·2023년 2월 5일
0

스프링에 등록된 bean 정보 가져오는 방법

  • AnnotationConfigApplicationContext의 getBean() 또는 getBeansOfType() 메소드를 이용한다.

  • 메소드의 파라미터에 따라 타입으로 검색을 할지, 빈의 이름으로 검색할지 선택할 수 있다.

    • 이름으로 검색하는 경우

      MemberService memberService = ac.getBean("memberService", MemberService.class);
    • 타입으로 검색하는 경우 & 한 개의 bean이 확실한 경우

      MemberService memberService = ac.getBean(MemberService.class);

      ⚠️ 타입으로 검색 시 한 타입을 상속 받거나 구현된 클래스가 스프링 컨테이너에 여러 개 존재할경우 NoUniqueBeanDefinitionException이 발생한다.

    • 타입으로 검색하는 경우 & 여러 개의 bean으로 예상되는 경우

      Map<String, DiscountPolicy> beansOfType = ac.getBeansOfType(DiscountPolicy.class);

상속된 bean을 가져오게 되면?

  • 상속 된 bean을 찾을 때는 아래와 같이 상속받는 모든 자식 클래스 bean을 여러 개 반환한다. 자식 클래스가 존재하여 여러 개의 bean이 스프링 컨테이너에 존재하는 경우에도 마찬가지로 getBean을 이용할 경우 NoUniqueBeanDefinitionException이 발생한다.
profile
오늘도 하나 배웠다.

0개의 댓글