🔶DI, IoC란?
🔷 DI(Dependency Injection = '의존성 주입')
: '의존성' 은, 하나의 코드가 다른 코드에 의존한다는 것을 뜻한다.
ex) Class A가 Class B의 코드를 사용하는데(상속 등..) B에 변경사항이 생긴다면, A도 코드가 변한다는 의미이다.
그러므로 A는 B에 의존한다고 본다(의존성이 있다).
즉 DI는, 메인 모듈이 직접 다른 하위 모듈에 대한 의존성을 주기 보다는 중간에 의존성 주입자(dependency injector)가
매개체가 되어 결국 메인모듈이 간접적으로 의존성을 주입하는 방식이다.
🔷 IoC(Inversion of Control = '제어의 역전')
: Class A가 Class B에게 직접 의존하는 것이 아닌, 어떠한 매개체(IoC Container)에게 제어권을 주게 되어
더이상 제어의 주체가 개발자가 아니게 되어 제어의 역전 현상이 발생하게 된다는 것이다.
- DI 장점
1) 의존성 감소( IoC Container가 매개체가 되기 때문)
- 변화에 강함(의존하고 있는 module의 lifeCycle을 전혀 신경쓰지 않으므로 모듈을 쉽게 교체 가능한 구조로 만듦)
- 재사용성이 더 좋아짐
- 유지보수 용이
2) 코드양 감소(module의 생성과 삭제 등 직접할 필요가 없으므로)
3) 테스트 용이(개발자가 원하는 객체의 상태를 직접 주입할 수 있기 때문에, 원하는 테스트코드 작성 용이)
참고: 큰돌의 터전, 5분개발지식
'IT || 개발공부 > Spring' 카테고리의 다른 글
[Spring boot] intelliJ로 Controller 생성 및 실행하기 (0) | 2023.11.02 |
---|---|
[Spring] Controller, Service , Repository의 역할 (0) | 2023.10.31 |
[Spring] API와 REST API (0) | 2023.10.27 |
[Spring] 오버라이딩 구현시 @Override가 필요한가 (0) | 2023.10.23 |
[Spring] 인터페이스가 가지고 있는 객체지향의 특징 (0) | 2023.10.20 |
댓글