공부/springboot

(3) 스프링 컨테이너와 빈 조회

샤샤샤샤 2023. 5. 10. 17:53

스프링 컨테이너

스프링 컨테이너의 종류

 

 BeanFactory

 스프링 컨테이너 최상의 인터페이스다.

 스프링 빈을 관리, 조회하는 역할을 담당한다.

 getBean()을 비롯하여 다수의 기능을 제공한다.

 

ApplicationContext

BeanFactory를 상속받는 인터페이스다.

국제화기능, 환경변수, 어플리케이션 이벤트 등 다양한 추가 기능을 제공한다.

 

BeanFactory를 직접 사용할 일은 거의 없다. 부가기능이 포함된 ApplicationContext를 사용한다. BeanFactory나 ApplicationContext를 스프링 컨테이너라 한다

 

AnnotationConfigApplicationContext : ApplicationContext의 구현체다. 생성자 함수에 @Configuration 클래스를 넣으면 해당 클래스 + 클래스 내부에 @Bean으로 등록된 모든 함수를 스프링 빈으로 등록해 컨터이너로 관리한다.

 

빈 조회 (AnnotationConfigApplicationContext )

아래의 코드에서는 AnnotationConfigApplicationContext 의 내장 함수를 사용한다.

getBeanDefinitionNames() : 스프링 컨테이너의 모든 빈 이름을 가져온다.

getBean() : 빈 이름으로 빈 객체(인스턴스)를 가져온다.

                   (이름, 타입) 또는 (타입) 으로 빈을 가져올수 있다.

                   동일한 타입이 둘 이상이라면 오류가 발생한다.

getBeansOfType() : 해당 타입의 모든 빈을 가져온다.

                                부모 타입으로 조회시, 자식 타입도 모두 조회 가능하다. 따라서 Object로 조회하면 모든 스프링 빈을 조회한다.

 

해당 타입으로 조회시 나오는 결과들