오류검증 = assertThrows(예외 ,()-> bean조회)
비교검증 = assertThat(비교값).isEqualsTo(비교값)
오류검증 instanceOf가 되지 않을경우
만약 존재하지 않는 이름으로 bean을 조회할 경우
void find BeanByNameX(){
ac.getBean("없는이름" , memberService.class);
}
org.junit.jupiter.api.Assertions.assertthrows(NoSuchBeanDefinitionException.class , ()-> ac.getBean("없는이름" , memberService.class));
org.junit.jupiter.api.Assertions.assertthrows: 만약 검증단계에서 문제가 발생할경우 예외비교를 한다.
NoSearchBeanprfinitionException.class : 발생할 예외를 추정하여 명시한다. 이 예외로 후자의 예외와 비교한다,
()-> ac.getBean("없는이름" , memberService.class)); : 람다식을 통해 이름이 없는 Bean을 불러와 Exception을 비교하고
반약 두 예외가 같은 예외라면 true를 반환한다.
타입으로만 Bean을 조회할 경우 같은 타입을 가진 Bean이 여러개 이상있다면 단1개만 불러올 수 없어서 오류를 발생시킨다.
이 경우 AppConfig의 각 메서드에 이름즉 등록된 Bean의 이름으로 호출해주는게 맞는 방법이다.
하지만 같은 반환타입이 여러개 있을수 있고 그 여러개의 bean을 불러내는 방법은 다음과 같다.
void findAllBeanByType(){
Map<String , memberRepository> beans ofType = ac.getBeanOfType(MemberRepository.class);
MemberRepository.class 타입을 가진 모든 객체를 getBeanOfType을 통해 map형태로 받아올 수 있다.
for(String key : beanOfType.KeySet(){
System.out.print(key);
여기서 map의 값은 각기 다른 메스드 명을 key값으로 사용하여 저장된다.,
})
}
Assertions.assertThat(beanOfType.size()).isEqualsTo(2);
그후 검증을 통해 실제 등록된 bean의 수 beanOfType.size() 와 검증에 비교할 값을 isEqualsTo(2) 사용해 비교를 진행한다.
-bean은 타입만으로 호출은 가능하다.
-단 같은 타입의 bean이 1개일 경우는 ac.getBean 으로 조회가 가능하다. 2개이상은 오류를 발생
-2개 이상의 bean을 조회할 때는 ac.getBeanOfType 으로 조회를 한다.이때 반환값은 map타입이다.
-bean 조회시 없는 이름으로 호출할 경우 NoSuchBeanDefinitionException 예외를 발생시킨다.
-bean은 이름으로 부르거나 타입으로 부르거나 둘다를 사용해서 부르는 방법으로 불러야한다.
-없는 조건으로 조회를 하면 예외를 발생시킨다.
'SpringBoot' 카테고리의 다른 글
10월25일 SpringBoot BeanFactory와 ApplicationContext (0) | 2022.10.26 |
---|---|
10월24일 SpringBoot 스프링 Bean조회 5 (0) | 2022.10.25 |
10월 19일 SpringBoot 스프링으로 Bean조회 3 (0) | 2022.10.20 |
10월 18일 SpringBoot 스프링으로 Bean조회2 (0) | 2022.10.19 |
10월17일 SpringBoot 등록된 Bean 조회하기1 (0) | 2022.10.18 |