DI (Dependency Injection 의존주입)
객체를 직접 생성(new 연산자)하는 것이 아니라 외부에서 생성된 객체를 주입받아 이용하는 것이다.
IoC (Inversion of Control, 제어권의 역전)
메소드나 객체의 생성, 라이프 사이클 관리, 호출작업을 개발자가 직접 하는게 아니라, 프레임워크의 컨테이너가 객체에 대한 제어권을 가지고 있는 것이다. (대부분의 프레임워크에서 IoC를 적용하고 있다.)
IoC는 의존관계 설정 및 라이프 사이클을 해결하기 위한 디자인 패턴이다.
IoC Container
기능은 객체에 대한 생명 및 생명주기 관리하는 기능 제공한다.
- 객체의 생성을 책임지고, 의존성을 관리함
- POJO의 생성, 초기화, 서비스, 소멸에 대한 권한을 가짐
- 개발자들이 직접 POJO를 생성할 수 있지만 컨테이너에게 맡김
컨테이너란 무언가를 담고, 특정 기능을 수행하는 프레임워크가 제공하는 논리적 컨텍스트
IoC의 분류
- IoC
- DL (Dependency Injection)
- DI (Dependency Lookup)
- Setter Injection
- Constructor Injection
- Method Injection
DL과 DI
DL (의존성 검색) | DI (의존성 주입) |
---|---|
저장소에 저장되어 있는 Bean에 접근하기 위해 컨테이너가 제공하는 API를 이용하여 Bean을 LookUp 하는 것 | 각 클래스간의 의존관계를 빈 설정 정보를 바탕으로 컨테이너가 자동으로 연결해주는 것 |
DL 사용시에 컨테이너 종속성이 증가하여, 주로 DI를 사용한다.
'Java, Spring > 개념정리' 카테고리의 다른 글
DI Container (0) | 2023.01.12 |
---|---|
DI(Dependency Injection) (0) | 2023.01.12 |
관심사의 분리, MVC 패턴 (0) | 2022.08.21 |
액션태그 (0) | 2022.08.16 |
디렉티브 태그 (0) | 2022.08.15 |