스프링 컨테이너에서 스프링 빈을 찾는 가장 기본적인 조회 방법
`ac.getBean(빈이름, 타입)`
`ac.getBean(타입)`
조회 대상 스프링 빈이 없으면 예외 발생
`NoSuchBeanDefinitionException: No bean named 'xxxxx' available
1. 빈 이름이 제대로 출력되는지 확인
<예제코드>
package hello.core.beanfind;
import hello.core.AppConfig;
import hello.core.member.MemberService;
import hello.core.member.MemberServiceImpl;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import static org.assertj.core.api.Assertions.*;
public class ApplicationContextBasicFindTest {
AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);
@Test
@DisplayName("빈 이름으로 조회")
void findBeanByName() {
MemberService memberService = ac.getBean("memberService", MemberService.class);
//sout + tab / ctrl + d
//System.out.println("memberService = " + memberService);
//System.out.println("memberService = " + memberService.getClass());
//검증
assertThat(memberService).isInstanceOf(MemberServiceImpl.class);
}
@Test
@DisplayName("이름 없이 타입으로만 조회")
void findBeanType() {
MemberService memberService = ac.getBean(MemberService.class);
//검증
assertThat(memberService).isInstanceOf(MemberServiceImpl.class);
}
@Test
@DisplayName("구체 타입으로 조회")
void findBeanByName2() {
MemberService memberService = ac.getBean("memberService", MemberService.class);
//sout + tab / ctrl + d
//System.out.println("memberService = " + memberService);
//System.out.println("memberService = " + memberService.getClass());
//검증
assertThat(memberService).isInstanceOf(MemberServiceImpl.class);
}
@Test
@DisplayName("빈 이름으로 조회X")
void findBeanByNameX() {
//ac.getBean("xxxxx", MemberService.calss);
//MemberService xxxxx = ac.getBean("xxxxx", MemberService.class);
org.junit.jupiter.api.Assertions.assertThrows(NoSuchBeanDefinitionException.class,
() -> ac.getBean("xxxxx", MemberService.class));
}
}
결과
2. 검증
<예제코드>
모두 TDD가 오류없이 실행됨을 확인
1) 빈 이름으로 조회
2) 이름 없이 타입으로만 조회
3) 구체타입으로 조회
4) 빈 이름으로 조회 X
모두 문제없이 빈을 조회/확인 할 수 있다.
반응형
'Develop > Spring (실습)' 카테고리의 다른 글
null 옵션처리 ( 주입할 빈이 없이도 동작해야 할 때 ) (0) | 2023.08.26 |
---|---|
필터 ( includeFilters & excludeFilters ) (0) | 2023.08.20 |
Spring Basic ( 컨테이너 구동원리 / 스프링 Bean 파보기 ) (0) | 2023.08.07 |
Thymeleaf 문법 사용하기 (0) | 2023.06.16 |
Spring-Boot-Devtools 라이브러리 (+사용방법) (0) | 2023.06.16 |