스프링 빈 조회 정리
9~11 의 글 동안 스프링 빈을 조회하는 방법에 대해서 알아보았다.
각 글의 내용을 간단하게 정리해보자
- 스프링 빈 조회 - 기본
- 스프링 빈 조회 - 동일한 타입이 둘 이상
- 스프링 빈 조회- 상속관계
빈 등록
스프링 컨테이너에 빈을 등록하는 방법으로 어노테이션을 기반으로하는 자바 설정 클래스를 이용하였다.
@Configuration 으로 등록된 클래스를 설정 클래스, 설계도로 하여
@Bean으로 등록된 메서드들의 이름을 빈 이름으로 하여 저장소에 빈을 등록했다.
빈 조회 - 기본
스프링에서 빈을 조회하는 가장 기본적인 방법은 getBean을 이용하는 것이다.
getBean(빈 이름, 빈 타입)
getBean(빈 이름)
getBean(빈 타입)
찾고자 하는 빈이 컨테이너에 등록되어있지 않다면 NoSuchBeanDefinitionException 예외가 발생한다.
빈 조회 - 동일한 타입이 둘 이상
getBean( 빈 타입) 을 이용하여 타입만으로 빈을 조회할 수 있었다.
그런데 만약 같은 타입의 빈이 둘 이상이라면 어떻게 될까?
같은 타입의 빈이 둘 이상인 경우 NoUniqueBeanDefinitionException 중복 오류가 발생했다.
그래서 같은 타입의 빈을 조회하는 경우, 조회하고자 하는 빈을 구분할 수 있게 빈이름도 같이 알려주기로 했다.
같은 타입의 모든 빈들을 조회하고 싶다면 getBeansOfType(빈 타입) 을 이용하면 된다.
빈 조회- 상속관계
상속관계에 있는 빈들을 조회하는 방법에는 중요한 원칙이 있다.
바로 부모 타입을 조회하면 자식 타입도 함께 조회하여 알려준다는 점이다.
즉, 부모 타입으로 조회하면 중복오류가 발생할 수 있다는 것인데 이런 경우 빈 이름을 알려주거나
특정 타입(자식 타입)으로 조회하면 된다.
또한 Object 타입의 경우 모든 자바 객체 클래스의 최상위 부모이기 때문에
Object 타입으로 조회시 모든 빈들을 조회할 수 있다.