한 객체가 다른 객체를 사용하는 경우 의존관계가 있다고 한다.
public class Store {
private Book book;
}
// Store 객체가 Book 객체에 의존관계가 있다.
public class Service{
// 개발자가 직접 주입
private Repository repository = new RepositoryImpl();
// 스프링에서 주입받아 사용
private final Repository repository;
@Autowired
public Service(Repository repository){
this.repository = repository;
}
}
객체 간 결합도가 줄어든다.
DI를 사용하지 않고 내부에서 의존관계를 주입할 경우 의존대상이 변할 때 고려해야할 점이 많아지는데 DI를 사용하게 되면 이 경우에 구현을 수정할 일이 없어진다.
재사용성이 높은 코드가 된다.
테스트하기 좋은 코드가 된다.