반응형
안녕하세요. 스프링 빈을 조회하는 기본적인 방법을 공부해 보겠습니다.
getBean(빈이름,타임)으로 조회가 가능하며 빈이름은 생량이 가능합니다.
실습으로 확인해보기 위한 코드는 아래와 같고
1
2
3
4
|
AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);
MemberService memberService = ac.getBean("memberService",MemberService.class);
System.out.println("memberService = " + memberService);
System.out.println("memberService.getClass() = " + memberService.getClass());
|
cs |
결과는 아래 사진으로 나왔습니다.
검증은 Assertions로 가능합니다.
이름 없이 타입으로만 조회해도 결과는 같았습니다.
코드는 아래와 같이 이름을 생략하였습니다.
1
2
3
|
MemberService memberService = ac.getBean(MemberService.class);
System.out.println("memberService = " + memberService);
System.out.println("memberService.getClass() = " + memberService.getClass());
|
cs |
또 구체 타입으로도 조회가 가능합니다.
MemberService memberService = ac.getBean("memberService",MemberServiceImpl.class);
위와 같이 인터페이스가 아니라 impl로 조회해도 에러가 발생하지 않습니다.
하지만 위처럼 검사하는 것은 역할에 의존해야 하는데 구현에 의존하였기 때문에 좋은 테스트 코드라고 할 수 없습니다.
모든 테스트는 실패 테스트도 같이 해주어야 합니다.
빈 이름을 등록하지 않은 빈 이름으로 확인을 한다면
위와 같이 no bean named 에러가 생깁니다.
1
2
|
assertThrows(NoSuchBeanDefinitionException.class,
() -> ac.getBean("memberServicexxxx",MemberService.class));
|
cs |
assertThrows를 통해 실패 테스트를 완료하였습니다.
반응형
'TIL > 스프링 핵심원리 - 기본편 with 인프런(김영한님)' 카테고리의 다른 글
스프링 핵심원리 기본편9 - 스프링 빈 조회(상속관계) (0) | 2024.07.16 |
---|---|
스프링 핵심원리 기본편8 - 동일 타입이 둘 이상 (0) | 2024.07.10 |
스프링 핵심원리 기본편6 - 스프링 컨테이너 생성 & 컨테이너에 등록된 모든 빈 조회 (0) | 2024.07.02 |
스프링 핵심원리 기본편5 - 스프링으로 전환하기 (0) | 2024.07.01 |
스프링 핵심원리 기본편4 - IoC, DI 그리고 컨테이너 (0) | 2024.06.27 |