TIL/스프링 핵심원리 - 기본편 with 인프런(김영한님)
스프링 핵심원리 기본편7 - 스프링 빈 조회(기본)
JJONGSTORY
2024. 7. 8. 12:28
반응형
안녕하세요. 스프링 빈을 조회하는 기본적인 방법을 공부해 보겠습니다.
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를 통해 실패 테스트를 완료하였습니다.
반응형