DI의 기본 아이디어는 유연하게 확장 가능한 오브젝트를 만들어두고 그 관계는 외부에서 동적으로 설정한다는 것이다.

왜 두 개의 오브젝트를 분리하고 인터페이스를 두고 느슨하게 연결한 뒤, 실제 사용 대상을 DI를 통해 외부에서 지정하는 것일까? -토비스프링-

유연한 확장이 가능하게 하기 위해서이다. 개방 폐쇄의 원칙(OCP) → 확장은 열리고 변경은 닫혀 있다.

DI 활용방법

의존 대상의 구현 방식을 바꾼다. A 기능 일부를 B에게 위임하는 A → B 구조에서 B를 다른 B1, B2, B3로 바꿀 수 있다.

예: DAO를 JDBC, JPA 등으로 바꾸는 것.

비즈니스 로직이 바뀌었을 경우, DI를 이용해 새로운 정책을 담은 클래스를 통째로 변경해주면 된다.

출처: 토비의 스프링 3.1 vol1 8장