- 해당 게시물은 인프런 - "스프링 핵심 원리 - 기본편" 강의를 참고하여 작성한 글 입니다
- 유료강의이므로 자세한 내용은 없고, 간단한 설명 위주로 정리했습니다
강의 링크
스프링 컨테이너가 생성되는 과정은 다음과 같다
//스프링 컨테이너 생성
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
ApplicationContext
를 스프링 컨테이너라고 한다
ApplicationContext
는 인터페이스고 AnnotationConfigApplicationContext
는 구현체다
이는 애노테이션 기반의 자바 설정 클래스고, 스프링 컨테이너는 XML을 기반으로도 만들 수 있다
다음 코드로 스프링 컨테이너를 생성한다
new AnnotationConfigApplicationContext(AppConfig.class)
스프링 컨테이너를 생성할 때는 구성 정보(AppConfig.class)를 지정해야 한다
스프링 컨테이너는 파라미터로 넘어온 설정 클래스 정보를 사용해서 스프링 빈을 등록한다
스프링은 빈을 생성하고, 의존관계를 주입한다
의존관계를 주입할 때는 설정 정보를 참고한다
스프링 컨테이너에서 스프링 빈을 찾는 기본적인 방법은 다음과 같다
AnnotationConfigApplicationContext.getBean(빈이름, 타입)
AnnotationConfigApplicationContext.getBean(타입)
조회 대상 스프링 빈이 없으면 다음 예외가 발생한다
NoSuchBeanDefinitionException: No bean named 'xxxxx' available
스프링 컨테이너의 최상위 인터페이스다
스프링 빈을 관리하고 조회하는 역할을 담당한다
getBean()
메소드를 제공한다
BeanFactory
기능을 모두 상속받아서 제공한다
또한 다양한 부가 기능을 제공한다
스프링은 BeanDefinition
이라는 추상화로 다양한 설정 형식을 지원한다
역할과 구현을 개념적으로 나눈 것이다
BeanDefinition
을 빈 설정 메타정보라고 한다
스프링 컨테이너는 메타정보를 기반으로 스프링 빈을 생성한다
AnnotationConfigApplicationContext
는 AnnotatedBeanDefinitionReader
를 사용해서 AppConfig.class
를 읽고 BeanDefinition
을 생성한다