Skip to content

Ioc와 DI

🍃 제어의 역전

IoC (Inversion of Control)

  • 기존에는 클라이언트 구현 객체가 스스로 필요한 서버 구현 객체를 생성하고, 연결하고, 실행하는 프로그램. 즉, 구현 객체가 프로그램의 제어 흐름을 조정하는 프로그램이 많았다.
  • 하지만 이런 방식은 코드의 재사용성과 유지보수성이 낮다.
  • 하지만 그와 반대로 프로그램에 대한 제어 권한을 외부에서 가지고 있는 것을 제어의 역전(Ioc)이라고 한다.
  • IoC는 객체지향성을 잃지 않고 유지보수성이 높은 코드를 만들 수 있게 해준다.
  • (+ 프레임워크는 작성된 코드를 제어하고 대신 실행해주는 역할을 한다. Spring도 이와 같은 프레임워크의 일종이다.)

IoC의 장점

  • 애플리케이션 코드의 양을 줄일 수 있다.
  • 클래스 간의 결합을 느슨하게 한다.
  • 애플리케이션의 테스트와 유지 관리를 쉽게 해 준다.

의존성 주입

DI (Dependency Injection)

IoC를 구현하기 위한 방법 중 하나이다. 말 그대로 어떤 객체에 스프링 컨테이너가 또 다른 객체와 의존성을 맺어주는 행위를 말한다. 의존관계 주입을 사용하면 정적인 클래스 의존관계를 변경하지 않고, 동적인 객체 인스턴스 의존관계를 쉽게 변경할 수 있다.

Ioc 컨테이너, DI 컨테이너

객체를 생성하고 관리하면서 의존관계를 연결해 주는 것을 IoC 컨테이너 또는 DI 컨테이너라고 한다. 어셈블러, 오브젝트 팩토리 등으로 불리기도 한다.