728x90
단일 빈 조회 방법 (이름 조회 , 타입 조회 , 없는 이름 조회 시 오류)
<스프링 컨테이너에 위치한 스프링 빈 목록>
<존재하지 않는 이름의 스프링 빈을 조회>
<발생 오류>
"NoSuchBeanDefinitionException" : "xxxxx" 란 이름을 가진 Bean을 찾을 수 없음.
실패 테스트의 목적
: 스프링 컨테이너에 존재하지 않는 스프링 빈을 이름 조회 하는 경우, "NoSuchBeanDefinitionException" ERROR 가 발생하여야 한다.
=> ERROR 가 발생하여야 올바른 테스트
<람다식을 활용한 테스트 코드>
assertThrows를 이용하여,
() -> ac.getBean("xxxxx", MemberService.class)
에서,
NoSuchBeanDefinitionException.class
ERROR 가 발생하면 테스트 성공.
다중 빈 조회 방법
Bean Type | Bean Name |
MemberRepository.class | memberRepository1 |
MemberRepository.class | memberRepository2 |
< 같은 타입을 가진 빈 2개 >
<스프링 컨테이너에 생성된 스프링 빈 종류 확인>
1. 타입 조회( .getBean() ) - 같은 타입을 가진 빈이 여러개
.getBean을 통해 Type : MemberRepository.class 인 Bean 을 조회
"NoUniqueBeanDefinitionException" ERROR 발생
=> 같은 타입을 가진 빈이 여러개 있어, 한가지 빈으로 특정되지 않기 때문에 발생
* 해결방법
조회 하고자 하는 Bean의 '이름' 과 '타입'을 모두 지정한다.
=> .getBean() 으로 스프링 빈을 조회하는 것은 1가지 빈 을 특정하여 조회하여야 한다.
2. 타입 조회( .getBeansType() ) - 같은 타입을 가진 빈 여러개를 모두 조회하기
그렇다면, MemberRepository.class 타입을 가진 스프링 빈을 모두 조회하고 싶다면 어떻게 해야할까?
.getBeansType() 을 사용한다.
728x90
'Spring' 카테고리의 다른 글
[Spring] ComponentScan (컴포넌트 스캔) (0) | 2023.11.18 |
---|---|
[Spring] 싱글톤(Singleton) 과 스프링 컨테이너 (0) | 2023.11.12 |
[Spring] 스프링 빈 생성과정 / 스프링 빈 구성 정보 파일 지원 과정 (0) | 2023.11.10 |
[Spring] 순수 JAVA 코드에서 Spring으로 전환하기 (1) | 2023.11.06 |
[Spring] 'IoC', 'DI', 'Spring Container' (0) | 2023.11.05 |