보름달빵 2024. 2. 13. 20:31

 

9~11 의 글 동안 스프링 빈을 조회하는 방법에 대해서 알아보았다.

각 글의 내용을 간단하게 정리해보자

 

  • 스프링 빈 조회 - 기본
  • 스프링 빈 조회 - 동일한 타입이 둘 이상
  • 스프링 빈 조회- 상속관계

 

빈 등록

스프링 컨테이너에 빈을 등록하는 방법으로 어노테이션을 기반으로하는 자바 설정 클래스를 이용하였다.

 

@Configuration 으로 등록된 클래스를 설정 클래스, 설계도로 하여

@Bean으로 등록된 메서드들의 이름을 빈 이름으로 하여 저장소에 빈을 등록했다. 

 

 

빈 조회 - 기본

스프링에서 빈을 조회하는 가장 기본적인 방법은 getBean을 이용하는 것이다. 

getBean(빈 이름, 빈 타입)
getBean(빈 이름) 
getBean(빈 타입)

 

 

찾고자 하는 빈이 컨테이너에 등록되어있지 않다면  NoSuchBeanDefinitionException 예외가 발생한다. 

 

 

빈 조회 - 동일한 타입이 둘 이상

getBean( 빈 타입) 을 이용하여 타입만으로 빈을 조회할 수 있었다. 

그런데 만약 같은 타입의 빈이 둘 이상이라면 어떻게 될까? 

 

같은 타입의 빈이 둘 이상인 경우  NoUniqueBeanDefinitionException  중복 오류가 발생했다. 

 

그래서 같은 타입의 빈을 조회하는 경우, 조회하고자 하는 빈을 구분할 수 있게 빈이름도 같이 알려주기로 했다. 

 

같은 타입의 모든 빈들을 조회하고 싶다면 getBeansOfType(빈 타입) 을 이용하면 된다. 

 

조회- 상속관계

 

상속관계에 있는 빈들을 조회하는 방법에는 중요한 원칙이 있다.

바로 부모 타입을 조회하면 자식 타입도 함께 조회하여 알려준다는 점이다. 

 

즉, 부모 타입으로 조회하면 중복오류가 발생할 수 있다는 것인데 이런 경우 빈 이름을 알려주거나 

특정 타입(자식 타입)으로 조회하면 된다. 

 

또한 Object 타입의 경우 모든 자바 객체 클래스의 최상위 부모이기 때문에 

Object 타입으로 조회시 모든 빈들을 조회할 수 있다.