토비의 스프링-IoC, DI,DIP

YJS·2024년 10월 12일
0

Toby's Spring

목록 보기
1/2

스프링(Spring) 프레임워크에서 자주 등장하는 개념인 IoC, DI, DIP는 모두 객체지향 설계 및 소프트웨어 개발 원칙과 관련이 있습니다. 각각의 개념을 설명하면서 그 차이점을 알아보겠습니다.

1. IoC (Inversion of Control, 제어의 역전)

  • 개념: IoC는 객체의 생성, 생명주기 관리, 의존성 주입 등과 같은 작업을 개발자가 아니라 프레임워크나 컨테이너가 대신 담당하는 것을 의미합니다. 즉, 프로그램의 제어 흐름이 사용자가 아닌 외부 프레임워크에 의해 제어된다는 의미입니다.
  • 스프링에서의 역할: 스프링 프레임워크는 IoC 컨테이너를 사용하여 객체의 생성과 관리를 책임집니다. 개발자는 객체 생성이나 의존성 관리에 신경 쓰지 않고 비즈니스 로직 구현에 집중할 수 있습니다.

2. DI (Dependency Injection, 의존성 주입)

  • 개념: DI는 객체 간의 의존성을 외부에서 주입하는 방식입니다. 즉, 객체가 스스로 의존 객체를 생성하거나 찾는 것이 아니라, 외부에서 필요한 객체를 주입받아 사용하는 방식입니다. 이는 의존성 관리의 한 방식으로, IoC의 한 구현 방법입니다.
  • 스프링에서의 역할: 스프링은 DI를 통해 객체 간의 의존성을 설정합니다. 이를 통해 코드의 결합도를 낮추고, 유지보수와 테스트가 쉬워집니다. DI 방식에는 크게 생성자 주입Setter 주입 두 가지가 있습니다.

3. DIP (Dependency Inversion Principle, 의존성 역전 원칙)

  • 개념: DIP는 객체지향 설계의 원칙 중 하나로, 고수준 모듈이 저수준 모듈에 의존해서는 안 된다는 원칙입니다. 대신, 두 모듈 모두 추상화(인터페이스나 추상 클래스)에 의존해야 한다고 제안합니다. 이를 통해 고수준 모듈과 저수준 모듈 간의 의존성을 역전시키고, 유연성과 확장성을 높일 수 있습니다.
  • 차이점: DIP는 객체 지향 설계 원칙에 해당하며, DI는 이를 구현할 수 있는 하나의 방법론으로 볼 수 있습니다. DIP를 따르는 설계를 구현하기 위해 DI가 자주 사용됩니다.

정리

  • IoC는 제어권을 개발자가 아닌 프레임워크에 넘기는 개념.
  • DI는 IoC의 한 구현 방식으로, 객체의 의존성을 외부에서 주입하는 방법.
  • DIP는 객체 지향 설계 원칙으로, 고수준 모듈이 저수준 모듈에 의존하지 않도록 설계하는 것.

스프링은 IoC 컨테이너를 통해 DI를 구현하고, 이를 통해 DIP와 같은 객체 지향 원칙을 따르는 설계를 유도합니다.

profile
우당탕탕 개발 일기

0개의 댓글