Dependency Injection (의존성 주입)
객체 자체가 아니라 Framework에 의해 객체의 의존성이 주입되는 설꼐 패턴
- Framework에 의해 동적으로 주입되므로 여러 객체간의 결합이 줄어든다.
- Dependency Injection은 Spring Framework 에서 지원하는 IoC의 형태
- 설정에 명시된대로 Container가
- bean 객체를 생성하고
- 종속성 주입을 수행한다.
- Dependency Injection(의존성 주입)과 Inversion Of Control(제어의 역전)은 같은 의미로 사용된다.
- IoC는 DI를 통해 달성된다.
- IoC(제어의 역전): 프로그램 제어권을 framework가 가져가는 것
- 개발자가 모든 제어의 중심이지만 코드 전체에 대한 제어는 framework가 한다.
- 개발자가 설정(xml, annotation 등)만 하면 Container가 알아서 처리한다.
- 즉, 우리는 Framework 속에서 프로그래밍을 하는 것.
장점
- Reduced Dependencies
- 종속성이 감소한다.
- components의 종속성이 감소하면 변경에 민감하지 않다.
- More Reusable Code
- 재사용성이 증가한다.
- 일부 인터페이스의 다른 구현이 필요한 경우, 코드를 변경할 필요없이 해당 구현을 사용하도록 components를 구성할 수 있다.
- More Testable Code
- 더 많은 테스트 코드를 만들 수 있다.
- Mock 객체는 실제 구현의 테스트로 사용되는 객체 종속성을 components에 주입할 수 있는 경우 이러한 종속성의 Mock 구현을 주입할 수 있다.
- 예를 들어, Mock 객체가 올바른 객체를 반환할 때, null을 반환할 때, 예외가 발생할 때 모두 처리한다.
- More Readable Code
- 코드를 읽기 쉬워진다.
- components의 종속성을 보다 쉽게 파악할 수 있으므로 코드를 쉽게 읽을 수 있다.
출처: gmlwjd9405.github.io/2018/11/09/dependency-injection.html
'JAVA' 카테고리의 다른 글
JAVA 스터디 : Spring AOP (0) | 2020.12.30 |
---|---|
JAVA 스터디 : Properties (0) | 2020.12.29 |
JAVA 스터디 : nginx의 이해 (0) | 2020.12.25 |
JAVA 스터디 : MVC패턴이란? (0) | 2020.12.24 |
JAVA 스터디 : Ajax ? (0) | 2020.12.23 |