DI (Dependency Injection)
DI(의존성 주입)은 클래스가 다른 클래스에 의존할 때, 그 의존성을 외부에서 주입받는 방식을 말한다. 객체가 필요로 하는 다른 객체를 직접 생성하지 않고 외부에서 받아 사용하는것
이로서 중복적인 코드를 줄이고, 유연성과 테스트 용이성을 높일 수 있다.
ex)
- a클래스가 b클래스를 의존하고 있다면 a클래스는 일반적으로 내부에서 b클래스를 인스턴스화 시키거나 직접 참조한다.
- DI를 사용하면 b클래스의 인스턴스는 외부 생성자나 메소드, 파라미터 등에서 전달되므로
a클래스는 b클래스에 대해 알 필요가 없다
#Ioc(Inversion of Control)
Ioc(제어의 역전)는 제어 권한이 프레임워크나 컨테이너 등에게 넘겨진다.
ex)
- 웹 서버 환경에서 HTTP 요청 처리 로직은 개발자한테 있지만
어떤 요청이 어떤 시점에 들어올지 결정하는 것은 웹 서버이다.
즉 웹 서버(Ioc컨테이너)가 개별 요청에 대한 제어를 역전 시킨 것이다.
IoC의 장점은 모듈간 결합도를 줄여 코드 변경 및 유지 보수를 용이하게 하는 것이다.