IoC(Inversion of Control)와 DI(Dependency Injection)는 소프트웨어 개발에서 사용되는 디자인 패턴 및 개념입니다.
이 둘은 주로 코드의 유연성, 재사용성, 테스트 용이성 등을 향상시키는데 도움을 주는데 사용됩니다.
IoC는 "제어의 역전"이라는 의미로, 기존에는 개발자가 컴포넌트의 생성 및 생명주기 관리를 담당했지만, 이를 프레임워크나 컨테이너에게 위임하는 개념입니다.
프레임워크 또는 컨테이너는 컴포넌트의 생명주기를 관리하며, 필요한 객체를 생성하고 의존성을 주입(DI)하는 등의 역할을 담당합니다.
이로써 코드의 결합도를 낮추고, 유지보수와 확장성을 향상시킬 수 있습니다.
IoC는 코드의 흐름이 개발자가 아닌 프레임워크나 컨테이너에 의해 결정되는 것을 의미합니다.
DI는 "의존성 주입"이라는 의미로, 객체 간의 의존 관계를 프레임워크나 컨테이너를 통해 외부에서 주입하는 개념입니다.
이를 통해 컴포넌트는 직접 의존하는 객체를 생성하거나 참조하지 않고, 외부로부터 주입받아 사용합니다.
의존성 주입을 통해 코드의 테스트 용이성을 증가시키고, 코드 재사용성을 높이며, 느슨한 결합도를 유지할 수 있습니다.
주입되는 의존성은 주로 생성자 주입, 메서드 주입, 속성 주입 등의 방식으로 이루어집니다.
간단히 말하면, IoC는 제어의 역전 원칙을 따라 코드의 흐름을 프레임워크나 컨테이너에 위임하여 유연성과 재사용성을 높이는 개념입니다.
DI는 의존성을 외부에서 주입하여 코드의 결합도를 낮추고 테스트 용이성을 향상시키는 패턴입니다.
둘을 함께 사용하면 코드의 유지보수와 개발 효율성을 향상시킬 수 있습니다.
핵심 키워드