Inversion Of Control - 제어의 역전
- any kind of
callback
을 제공하는 패턴
- 즉, 내가 메서드를 실행하는 시점
callback
, 나를 구성하는 의존관계의 연결DI
에 관한 모든 제어권을 외부 핸들러/컨트롤러에 넘기는 것
- ‘나’ 는 담당하는 로직의 ‘실행’ 만을 책임짐
- 로직의 구현, 로직의 생성 모두 외부에서 전달 받음
DI는 IOC를 구현하는 방법 중 하나
스프링 빈 (빈)
- 스프링 IoC 컨테이너가 관리 하는 객체
- 기본적으로 싱글톤 스코프를 가짐
- 싱글톤 스코프 : one and only one
- 프로토 타입 스코프 : 매번 다른 객체
- 장점
- 의존성 관리
- 스코프 관리
- 라이프사이클 인터페이스
스프링 IoC 컨테이너 (DI 컨테이너)
- BeanFactory
- 애플리케이션 컴포넌트의 중앙 저장소
- 빈 설정 소스로 부터 빈 정의를 읽어들이고, 빈을 구성하고 저장한다.
ApplicationContext 빈 팩토리를 확장한 IoC 컨테이너. 기본적인 기능은 빈 팩토리와 동일하고 스프링이 제공하는 각종 부가 서비스를 추가로 제공한다.
- 환경변수 - 로컬, 개발, 운영등을 구분하여 처리
- 메시지 소스 처리 기능 (i18n)
- 이벤트 발행하고 구독하는 모델을 편리하게 지원
- 편리한 리소스 조회