Inversion of Control (IoC):
IoC는 프로그램의 흐름에 대한 제어가 반전되는 설계 원칙이다. 메인 프로그램이 흐름을 제어하고 모듈을 호출하는 대신, 모듈에 제어권이 주어지고 외부 엔터티에 의해 호출된다.
간단히 말해서, 애플리케이션이 컴포넌트를 선택하는 대신 외부 기관(예: 프레임워크)이 해당 컴포넌트를 애플리케이션에 주입하는 것이다.
IoC의 주요 이점은 컴포넌트의 결합을 줄여 모듈식이며 유지 관리가 쉬운 코드를 만드는 것
전통적 접근:
IoC 접근:
Dependency Injection (DI):
컴포넌트가 자체 종속성을 생성하는 대신 종속성(객체)을 컴포넌트에 제공하는 것을 의미한다.
Java에서는 여러 가지 방법으로 이를 수행할 수 있습니다:
Constructor 주입: Constructor를 통해 종속성이 제공
setter 주입: setter 메서드를 통해 종속성이 제공
method 주입: method를 통해 종속성이 제공됩니다.
DI는 모의 종속성을 주입하여 단위 테스트를 더 쉽게 만들어준다. 또한 SOLID 원칙, 특히 단일 책임 원칙 및 개방/폐쇄 원칙을 촉진한다.