본문 바로가기
IT || 개발공부/Spring

[Spring] DI, IoC란?

by saesong 2023. 10. 30.

🔶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분개발지식 

 

 

댓글