본문 바로가기
공부/springboot

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

by 샤샤샤샤 2023. 5. 10.

스프링 컨테이너

스프링 컨테이너의 종류

 

 BeanFactory

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

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

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

 

ApplicationContext

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

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

 

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

 

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

 

빈 조회 (AnnotationConfigApplicationContext )

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

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

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

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

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

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

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

 

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