더북(TheBook)

3.2 IoC의 종류

왜 IoC에 두 가지 종류가 있으며, 이들이 다시 서로 다른 구현체로 나누어지는지 궁금할 것입니다. 이 질문에 대한 명확한 답은 없어 보입니다. 의존성 주입과 의존성 룩업은 제공하는 유연성의 정도가 분명히 다르겠지만, 언뜻 보기에는 그저 낡은 아이디어(의존성 룩업)와 새로운 아이디어(의존성 주입)를 섞어 놓은 것에 불과해 보이기도 합니다. 의존성 룩업은 오래전부터 사용하던 방법으로, 언뜻 보기에 자바 개발자들에게는 더 친숙해 보입니다. 반면 의존성 주입은 언뜻 보기엔 직관적이지 않지만 실제로는 의존성 룩업보다 훨씬 유연하고 유용합니다. 의존성 룩업 방식의 IoC에서는 컴포넌트 스스로 의존성의 참조를 가져와야 합니다. 반면에 의존성 주입 방식의 IoC에서는 IoC 컨테이너가 컴포넌트에 의존성을 주입합니다. 의존성 룩업은 의존성 풀(dependency pull)과 문맥에 따른 의존성 룩업(Contextualized Dependency Lookup, CDL)이라는 두 가지 방식으로 나뉩니다. 의존성 주입도 생성자(constructor) 의존성 주입과 수정자(setter) 의존성 주입의 두 가지 방식으로 나뉩니다.

Note 3.2절에서는 가상의 IoC 컨테이너가 어떻게 각기 다른 의존성을 검색해 인식하는지에 대해서는 신경 쓰지 않아도 됩니다. 각 단계에서 IoC 컨테이너가 적절한 시점에 메커니즘별로 정의된 작업을 수행한다는 점만 알아두면 됩니다.

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