다히의 개발일지
DI(Dependency Injection) & IoC(Inversion of Control) 본문
* 객체 의존성 (Object Dependencies) = 객체가 상호작용한다.
하나의 모듈이 바뀌면 의존한 다른 모듈까지 변경된다.
Unit Test 작성이 어렵다.
*의존성 주입(Dependency Injection) = Framework에 의해 객체 의존성 주입
Spring FrameWork에서 지원하는 IoC형태 ( IoC 컨테이너에서 객체를 생성한 후 생성된 객체를 다른 객체에 주입 - IoC 컨테이너에서 생성된 객체들을 한번에 관리할 수 있다는 장점이 있다, )
Controller가 bean 객체를 생성, 종속성 주입을 수행한다.
* IoC ( Inversion of Control : 제어의 역전 )
객체의 생성에서부터 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌어 있다는 것
Framework 속에서 프로그래밍을 하는 것
모든 종류의 작업을 사용하는 "사용자" 쪽에서 제어하는 구조이며 코드 전체에 대한 제어는 framework가 한다.
개발자가 설정(xml, annotation 등)만 하면 controller가 알아서 처리한다.
내용정리 | |
Bean | 스프링에서 제어권을 갖고 직접 생성하고 관계를 부여하는 객체(object) |
Bean Factory | 스프링의 IoC를 담당하는 핵심 컨테이너. 빈을 등록/생성/조회/반환/관리 |
application context | bean factory를 확장한 IoC 컨테이너. BeanFactory를 상속 |
configuration metadata | 설정정보/설정 메타정보. 주로 bean 생성/구성하는 용도로 사용되며 application context혹은 bean factory가 IoC를 적용하기 위해 사용하는 메타 정보 |
container |
IoC방식으로 bean을 관리한다는 의미에서 bean factory나 application context를 가리킨다. spring container = application context. 하나의 애플리케이션에 보통 여러개의 applicationContext Object가 만들어지는데 이를 spring container라고 부를 수 있다. 객체를 관리하는 컨테이너 |
spring framework | IoC container, application context를 포함해서 spring이 제공하는 모든 기능 |
* IoC와 DI의 관계
스프링 프레임워크에서 IoC와 DI는 같은 개념으로 작용하며 IoC는 DI를 통해 작용한다고 하지만 IoC기능은 스프링 프레임워크가 나오기 이전부터 사용되던 개념이었다.
경량 컨테이너들이 이야기 하는 IoC는 DI 용어로 설명하는 게 적합할 수 있다.
DL (의존성 검색) : 저장소에 저장되어 있는 Bean에 접근하기 위해 개발자들이 API를 이용해서 사용하고자 하는 Bean을 Lookup하는 것
DI (의존성 주입) : 컨테이너 자동 연결
'다히의 피땀눈물 > SPRING' 카테고리의 다른 글
MVC 구조 (0) | 2019.07.09 |
---|---|
스프링 session 기반 로그인 화면 구현 (0) | 2019.07.01 |
파라미터 넘기기 (0) | 2019.06.28 |
SPRING + MYBATIS + 다중 DB 설정 (1) | 2019.06.28 |