spring

DI 컨테이너

키위먹고싶다 2022. 5. 11. 17:56

IoC 컨테이너, DI 컨테이너 : 객체를 생성하고 관리하면서 의존관계를 연결해주는 것. 최근에는 의존관계 주입에 초점을 맞추어 주로 DI 컨테이너라고 한다. 

 

BeanFactory

  • 스프링 컨테이너의 최상위 인터페이스이다.
  • 스프링 빈을 관리하고 조회하는 역할을 담당한다.
  • getBean()을 제공한다

 

ApplicationContext

  • BeanFactory 기능을 모두 상속 받아서 제공한다.
  • 애플리케이션을 개발할 때는 빈을 관리하고 조회하는 기능 외에 여러 부가기능이 필요한데 이 기능들을 모두 상속받는다. 
  •  - 메시지소스를 활용한 국제화 기능 : 한국에선 한국어.. 영어권에서 영어로
  •  - 환경변수 : 로컬, 개발, 운영등을 구분해서 처리
  •  - 애플리케이션 이벤트 : 이벤트를 발행하고 구독하는 모델을 편리하게 지원
  •  - 편리한 리소스 조회 : 파일, 클래스 패스, 외부 등에서 리소스를 편리하게 조회
  • 스프링 컨테이너는 xml기반으로 만들 수 있고 애노테이션 기반의 자바 설정 클래스로 만들 수 있다. 

 

정리

  • ApplicationContext, BeanFactory를 스프링 컨테이너라고 하며 BeanFactory를 사용하는 일은 거의 없고 BeanFactory와 여러 부가기능을 상속받은 ApplicationContext를 사용한다.