- Dependency Injection
의존성
- 아래는 객체지향 프로그래밍에서 아주 흔히 쓰이는 형태의 클래스 및 메소드의 구현 예이다.
public class TestClass { public String testMethod() { OtherClass instance = new Instance(); instance.setData('a'); return instance.getData(); } }
- TestClass의 testMethod에선 내부적으로 OtherClass라는 클래스를 사용한다.
- OtherClass의 인스턴스에 Data를 설정하고 Data를 불러온다.
- 만약 OtherClass가 변경되어 더 이상 setData 라는 메서드를 지원하지 않는다면 에러가 발생하게 된다.
- 이때 TestClass는 OtherClass에 의존성이 있다고 표현한다.
- OtherClass를 TestClass의 의존성(Dependancy)이라고 표현하기도 한다.
의존성 문제
- 의존성은 강한 결합도를 야기한다.
- 의존성은 모듈의 수정을 어렵게 한다.
- 의존성은 테스트를 어렵게 한다.
의존성 주입의 장점
클라이언트 관점
구분 | 설명 |
---|---|
종속성의 감소
(Reduced Dependencies) |
|
결합도 감소
(Reduced coupling) |
|
재사용성 증가
(More Reusable Code) |
|
코드 관점
구분 | 설명 |
---|---|
테스트 케이스 생성 용이
(More Testable Code) |
|
코드 가독성 향상
(More Readable Code) |
|
코드 단순화
Simplify code) |
|
의존성 주입 방법
방법 | 설명 |
---|---|
생성자 사용
(Constructor Injection) |
|
세터(Setter)를 통한 주입
(Method(Setter) Injection) |
|
인터페이스(Interface)를 통한 주입
(Field Injection) |
|
참고 문헌
- 정보관리기술사 123회 하나둘셋 동기회 기출풀이집