스프링 컨테이너의 생성
/스프링 컨테이너 생성
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
- ApplicationContext는 인터페이스이며 이를 스프링 컨테이너라 함
- 인터페이스이기 때문에 XML기반으로 만들 수도 있고, 어노테이션 기반 클래스로 만들 수도 있음
(다양한 설정 형식을 지원할 수 있는 이유는 BeanDefinition이라는 추상화가 있기 때문)
- 스프링 컨테이너 안에는 스프링 빈 저장소가 있고 빈 이름과 빈 객체가 저장된다.
- 스프링 컨테이너는 설정 정보를 참고해서 의존관계를 주입한다.
- ApplicationContext 인터페이스는 BeanFactory 인터페이스를 상속받음
- 빈을 관리하고 검색하는 기능은 BeanFactory에서 제공해주고 ApplicationContext 인터페이스는 다양한 부가기능을 위해 여러가지 다른 인터페이스를 상속받게 된다.
스프링 빈 조회
- 이름으로 조회 : ac.getBean(빈이름, 타입)
- 타입으로 조회 : ac.getBean(타입)
동일한 타입이 둘 이상
- 조회 대상 스프링 빈이 없으면 예외가 발생한다.(NoSuchBeanDefinitionException)
- 여기서 타입으로 조회하면 둘 이상의 스프링 빈이 조회될 수 있어 오류가 발생한다.
이때는 빈 이름 지정으로 해결 할 수 있다.
- ac.getBeansOfType()을 사용하면 해당타입의 모든 빈을 조회할 수 있다.
상속 관계
- 부모 타입으로 조회하면 자식 타입도 함께 조회
- 그래서 만약 Object 타입으로 조회하면 모든 스프링 빈이 조회됨
------------------------
참고 : 인프런 김영한님 강의(스프링 핵심원리 기본편)
댓글