더북(TheBook)

의존성 룩업 방식은 의존성 주입 방식보다 훨씬 더 복잡할 수도 있습니다. 복잡하다는 것 자체를 두려워할 필요는 없지만, 의존성 관리를 애플리케이션에서 직접 처리하게 함으로써 불필요하게 복잡해질 이유가 전혀 없긴 합니다.

이러한 모든 이유를 제외하고라도 룩업 방식 대신 주입 방식을 선택하는 가장 큰 이유는 의존성 주입을 사용하면 그만큼 개발이 쉬워지기 때문입니다. 주입 방식을 사용하면 작성해야 하는 코드량을 줄일 수 있고 코드도 간결해지며, 보통은 강력한 IDE를 이용해 자동화도 가능합니다. 주입이 이루어지는 예제 코드는 주입을 위한 어떠한 작업도 적극적으로 수행하지 않는다는 점에서 수동적입니다. 주입 코드에서 볼 수 있는 가장 흥미진진한 점은 객체가 필드에만 저장된다는 것입니다. 저장소나 컨테이너에서 의존성을 가져오는 코드가 전혀 필요하지 않습니다. 따라서 코드는 훨씬 단순해지고 에러도 줄어듭니다. 수동적인 코드는 잘못 작성될 가능성이 훨씬 적어서 능동적인 코드보다 유지보수가 쉽습니다. CDL 예제에서 가져온 다음 코드를 살펴보겠습니다.

예제 3-7 의존성 룩업을 수행하는 메서드 예([[cdl]] ContextualizedDependencyLookup.java)

public void performLookup(Container container) {
    this.dependency = (Dependency) container.getDependency("myDependency");
}

 

이 코드는 의존성 키가 바뀌거나, 컨테이너 인스턴스가 null이거나, 반환된 의존성이 잘못된 타입일 때처럼 여러 부분에서 에러가 발생할 수 있습니다. 이런 코드는 에러가 발생할 수 있는 부분이 많아 리팩터링해야 할 여지가 많다고 할 수 있습니다. 의존성 룩업을 이용하면 애플리케이션의 컴포넌트들을 서로 분리할 수 있지만, 어떤 작업을 하려고 할 때 이런 컴포넌트들을 다시 결합하는 추가 코드가 필요하기 때문에 복잡해집니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.