IoC 컨테이너 또는 DI 컨테이너라고 불린다. 개발자를 대신해서 객체를 생성하고 관리하며 각 객체간 의존 관계를 연결해주는 역할을 한다.

ApplicationContext 를 스프링 컨테이너라고 한다. ApplicationContext 는 인터페이스이다.

2. Java-based Configuration

스프링 컨테이너는 @Configuration 이 붙은 클래스를 설정 정보로 사용한다. @Configuration 객체를 모두 읽어오고 해당 객체 내부에 있는 @Bean 어노테이션이 붙은 메서드 내의 객체들을 스프링 빈 객체로 생성하여 관리한다.

스프링 컨테이너의 종류로는 BeanFactory 와 ApplicationContext 가 있다.

BeanFactory vs ApplicationContext

BeanFactory

스프링 컨테이너의 최상위 인터페이스이다. 스프링 빈을 관리하고 조회하는 역할을 담당한다. getBean() 메소드를 이용하여 스프링 빈 객체를 호출하는 시점에 빈을 생성한다.

ApplicationContext

BeanFactory 의 기능을 모두 상속받아 제공한다. 빈을 관리하고 검색하는 기능을 BeanFactory 가 제공해주지만 ApplicationContext 는 이외의 부가 기능도 제공한다. getBean() 메소드를 호출하기 전에 초기화 시점에 모든 싱글톤 빈을 미리 로드하기 때문에 빈을 지연없이 받을 수 있다.

BeanFactory 를 직접 사용하는 일은 거의 없으며 주로 ApplicationContext 를 사용한다.

Untitled

https://chobopark.tistory.com/200