익명 사용자
로그인하지 않음
토론
기여
계정 만들기
로그인
IT위키
검색
의존성 주입
편집하기
IT위키
이름공간
문서
토론
더 보기
더 보기
문서 행위
읽기
편집
원본 편집
역사
경고:
로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다.
로그인
하거나
계정을 생성하면
편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.
스팸 방지 검사입니다. 이것을 입력하지
마세요
!
[[분류:소프트웨어 공학]] [[분류:프로그래밍]] ;Dependency Injection ==의존성== *아래는 객체지향 프로그래밍에서 아주 흔히 쓰이는 형태의 클래스 및 메소드의 구현 예이다. <pre> public class TestClass { public String testMethod() { OtherClass instance = new Instance(); instance.setData('a'); return instance.getData(); } } </pre> *TestClass의 testMethod에선 내부적으로 OtherClass라는 클래스를 사용한다. **OtherClass의 인스턴스에 Data를 설정하고 Data를 불러온다. *만약 OtherClass가 변경되어 더 이상 setData 라는 메서드를 지원하지 않는다면 에러가 발생하게 된다. *'''이때 TestClass는 OtherClass에 의존성이 있다고 표현한다.''' **OtherClass를 TestClass의 '''[[의존성|의존성(Dependancy)]]'''이라고 표현하기도 한다. ==의존성 문제== *의존성은 강한 [[결합도]]를 야기한다. *의존성은 모듈의 수정을 어렵게 한다. *의존성은 테스트를 어렵게 한다. ==의존성 주입의 장점== '''클라이언트 관점''' {| class="wikitable" !구분 !설명 |- |종속성의 감소 (Reduced Dependencies) | *컴포넌트의 종속성이 감소하면 변경에 민감하지 않게 됨 |- |결합도 감소 (Reduced coupling) | *결합도를 낮추어 주면서 유연성과 확장성을 향상 |- |재사용성 증가 (More Reusable Code) | *인터페이스의 구현 변경 필요한 경우, 코드 변경 없이 해당 구현을 사용하도록 컴포넌트 구성 가능 |} '''코드 관점''' {| class="wikitable" !구분 !설명 |- |테스트 케이스 생성 용이 (More Testable Code) | *실제 구현의 테스트로 사용되는 Mock 객체 활용 *의존성을 컴포넌트에 주입할 수 있는 경우 단위 테스트 편의성을 높여준다 |- |코드 가독성 향상 (More Readable Code) | *컴포넌트의 종속성을 보다 쉽게 파악할 수 있으므로 코드를 쉽게 읽을 수 있다. |- |코드 단순화 Simplify code) | *의존 관계 제거와 사용 관점의 단순화로 프로그램 코드 전체의 단순화 |} ==의존성 주입 방법== {| class="wikitable" !방법 !설명 |- |생성자 사용 (Constructor Injection) | *필요한 의존성을 모두 포함하는 클래스의 생성자를 만들고 그 생성자를 통한 의존성을 주입 |- |세터(Setter)를 통한 주입 (Method(Setter) Injection) | *의존성을 입력받는 Setter 메소드를 만들고 이를 통한 의존성을 주입 |- |인터페이스(Interface)를 통한 주입 (Field Injection) | *의존성을 주입하는 함수를 포함한 인터페이스를 작성 *이 인터페이스를 구현하도록 함으로써 실행 시에 이를 통하여 의존성을 주입 |} == 참고 문헌 == * 정보관리기술사 123회 하나둘셋 동기회 기출풀이집
요약:
IT위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는
IT위키:저작권
문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다.
저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소
편집 도움말
(새 창에서 열림)
둘러보기
둘러보기
대문
최근 바뀜
분류별 보기
일반 IT용어
프로젝트 관리
디지털 서비스
블록체인
인공지능
소프트웨어 공학
운영체제
컴퓨터 구조
자료 구조
데이터 과학
데이터베이스
네트워크
프로토콜
보안
컴플라이언스
개인정보보호
표준
경영학
기업 IT
조직/단체
광고
위키 도구
위키 도구
특수 문서 목록
문서 도구
문서 도구
사용자 문서 도구
더 보기
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보
문서 기록