"의존관계 주입(DI)은 다양한 형태로 적용할 수 있다. DI의 가장 중요한 개념은 제3자의 도움을 통해서 두 오브젝트 사이의 유연한 관계가 설정되도록 만든다는 것이다. 이 개념을 따르는 DI를 구현하고 적용하는 방법은 매우 다양하다.

일반적으로는 DI는 의존관계에 있는 두 개의 오브젝트와 이 관계를 다이나믹하게 설정해주는 오브젝트 팩토리 (DI컨테이너), 그리고 이를 사용하는 클라이언트라는 4개의 오브젝트 사이에서 일어난다. 하지만 경우에 따라서 원시적인 전략패턴 구조를 따라서 클라이언트가 오브젝트 팩토리의 책임을 함께 가지고 있을 수도 있다. 또는 클라이언트와 전략(의존 오브젝트)이 결합될 수도 있다. 심지어는 클라이언트와 DI관계에 있는 두 개의 오브젝트가 모두 하나의 클래스 안에 담길 수도 있다.

이런 경우에는 DI가 매우 작은 단위의 코드와 메소드 사이에서 일어나기도 한다. 얼핏 보면 DI 같아보이지 않지만 세밀하게 관찰해보면 엄연히 DI가 이루어지고 있다는 것을 알 수 있다. 이렇게 DI의 장점을 단순화 해서 IoC컨테이너의 도움 없이 코드 내에서 적용한 경우를 마이크로 DI라고 부르기도 한다. 또는 코드에 의한 DI라는 의미로 일종의 수동 DI라고 볼 수 있다."

- 3장에서

 

실제로 스프링에는 클라이언트 메소드 내에서 전략을 정의(선택이나 오브젝트 생성이 아니라)하는 DI도 적지 않고, 클라이언트를 컨텍스트와 같은 클래스에 두기도 한다. 아예 전략이 private static class로 정의되어있어서 특정 클라이언트 내부 구현에만 사용되는 경우도 매우 흔하다. DI라고 하면 XML과 컨테이너, 애노테이션과 잘 분리된 클래스를 상상할지 모르겠지만, DI는 사실 평범한 구현 코드 안에서도 매우 영리하게 사용될 수 있는 기법이다.

Related posts:

  1. Dependency Injection 표준화?
  2. JSR-330 Dependency Injection for Java 최종 승인
  3. EJB3의 Dependency Injection
  4. DI의 본질 – 다이나믹 (타입) 언어는 Dependency Injection이 필요없는가?
  5. Dependency Injection의 Dependency란 무엇인가?
  6. Code Organization & Cyclic Dependency Problem
  7. Spring 3.0 (42) Spring Dependency Matrix 업데이트
  8. Spring 3.0 (53) Spring Dependency Matrix 업데이트
  9. Spring 3.0 (7) Spring 3.0 Dependency Matrix
  10. 유쾌한 이슈처리 재촉 메일
  11. DI와 인터페이스
  12. [토스3] 테스트를 위한 필드 주입 유틸
  13. 토비의 스프링 3이 나오기까지 (9)
  14. 스프링에서 테스트란

Facebook comments:

to “마이크로 DI(dependency injection)”

  1. thank you for share!

  2. thank you for share!

Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© 2017 Toby's Epril Suffusion theme by Sayontan Sinha