Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 알고리즘
- JDBC
- AOP
- Greedy
- QueryDSL
- Android
- 백준
- 스프링
- springdatajpa
- jpa
- Proxy
- Spring Boot
- 스프링 핵심 원리
- kotlin
- 김영한
- Servlet
- SpringBoot
- transaction
- http
- 인프런
- pointcut
- JPQL
- Thymeleaf
- 스프링 핵심 기능
- db
- 그리디
- Exception
- 자바
- java
- spring
Archives
- Today
- Total
개발자되기 프로젝트
스프링 빈 조회 - 기본 본문
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
'인프런 > [인프런] Spring 핵심원리 이해' 카테고리의 다른 글
스프링 빈 조회 - 상속관계 (0) | 2021.07.26 |
---|---|
스프링 빈 조회 - 같은 타입의 빈이 여러 개면? (0) | 2021.07.26 |
컨테이너에 등록된 빈 조회 (0) | 2021.07.26 |
스프링 컨테이너 생성 (0) | 2021.07.25 |
스프링으로 전환~~! (0) | 2021.07.25 |
Comments