Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

스프링 빈 조회 - 기본 본문

인프런/[인프런] Spring 핵심원리 이해

스프링 빈 조회 - 기본

Seung__ 2021. 7. 26. 20:25

1. 스프링 컨테이너에서 스프링 빈을 찾는 가아아아아아장 기본적인 방법


  • ac.getBean(빈의 이름, 타입)
  • ac.getBean(타입)
  • 찾을 대상이 없으면 예외터짐

 

2. 이름으로 조회하기


  • ac.getBean(빈 이름, 타입)
  • MemberService의 구현체는 MemverServiceImpl, 
  • MemberServiceImpl이 빈으로 등록되어 있어야 한다.
    @Test
    @DisplayName("빈 이름으로 조회")
    void findBeanByName(){

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

        assertThat(memberService).isInstanceOf(MemberServiceImpl.class);
    }
}

 

3. 타입으로 조회


  • MemberService의 구현체는 MemverServiceImpl, 
  • MemberServiceImpl이 빈으로 등록되어 있어야 한다.
 @Test
    @DisplayName("타입으로 만 조회")
    void findBeanByType(){

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

        assertThat(memberService).isInstanceOf(MemberServiceImpl.class);
    }

 

 

4. 구체 타입도 조회가 된다. --> 구현에 의존하게 된다. 참고!


  • MemberService의 구현체는 MemverServiceImpl,
   @Test
    @DisplayName("구체 타입으로 조회")
    void findBeanByName2(){

        MemberService memberService = ac.getBean("memberService", MemberServiceImpl.class);

        assertThat(memberService).isInstanceOf(MemberServiceImpl.class);
    }

 

5. 테스트는 항상 실패 테스트도!


  • 조회가 불가능 하면
  • NoSuchBeanDefinitionException 예외가 발생한다.
   @Test
    @DisplayName("빈 이름으로 조회 불가!")
    void findBeanByNameX(){
        //ac.getBean("xxxxxx", MemberService.class);
        MemberService xxxxxx = ac.getBean("xxxxxx", MemberService.class);
        
    }

  • 그러면 조회가 불가능한 상황에 NoSurchBeanDefinitionException이 발생하는지 검증하자.
  • assertionThrouws(예상 예외 타입, ()->이 로직을 실행했을 때?)
 @Test
    @DisplayName("빈 이름으로 조회 불가!")
    void findBeanByNameX(){
        //ac.getBean("xxxxxx", MemberService.class);
        //MemberService xxxxxx = ac.getBean("xxxxxx", MemberService.class);

        assertThrows(NoSuchBeanDefinitionException.class,
                () -> ac.getBean("xxxxxx", MemberService.class));
    }

 

 

 

6. GitHub : 210726 Find Bean


 

 

GitHub - bsh6463/SpringCoreFunction

Contribute to bsh6463/SpringCoreFunction development by creating an account on GitHub.

github.com

 

Comments