[ 2022.10.30 TIL-의존성 주입과 IoC ]

IoC(Inversion of Control)
✏️ IoC란?
- 제어권 역전
- 개발자가 직접 의존 관계를 설정하는 것이 아니라 외부(스프링 컨테이너)에서 의존관계를 자동으로 설정해주는 것을 의미
✏️ IoC의 특징
- 객체가 자신이 사용할 객체를 생성하거나 선택하지 않음
- 객체가 어떻게 생성되고 사용되는지 알 수 없음
- 객체 제어 권한을 위임받은 스프링 IoC 컨테이너에 의해 생성되어 사용됨
✏️ IoC 장단점
- 장점
- 인터페이스 기반 설계가 가능하여 컴포넌트 재사용이 증가
- 체계적이고 효율적인 의존상태를 관리 가능
- 단점
✏️ 스프링 IoC 컨테이너
의존성 주입
✏️ 의존성 주입(DI, Dependency Injection)
- 스프링 IoC 컨테이너를 통해 객체에 의존성을 주입
- 의존성 주입(DI)도 IoC의 일종
✏️ 의존성 주입 방법
✏️ 의존성 주입 장단점
-
장점
- 인터페이스 기반 설계로 코드가 유연
- 리펙토링 수월
- 유닛 테스트의 이점
- 클래스간 결합도를 낮춤
- 코드가 단순해지고 재사용성을 높여줌
-
단점
- 간단한 프롸그램을 만들 때 번거러움
- DI 컨테이너 자체에 대해 따로 공부해야함
- 코드 자체가 추상화되어 있어 이해하기 어려움
- 의존성 주입 프레임워크는 컴파일 단계에서 어노테이션 프로세서를 이용해 파일을 생성하기 때문에 빌드 시간이 늘어남
참고
의존선 주입과 IoC