Hyeok의 웹 개발 블로그

<2025.03.31> IOC / DI 본문

TIL/Spring

<2025.03.31> IOC / DI

Yhyeok 2025. 3. 31. 21:13

📌IOC (제어의 역전 , Inversion Of Control)

  • 객체의 생성 및 생명주기 관리를 개발자가 직접 하는 것이 아니라 컨테이너가 담당
  • 객체 간의 결합도를 낮춰 유연한 코드가 된다.

 

 


📌DI (의존성 주입, Dependency Injection)

  • Spring이 객체 간의 의존성을 자동으로 주입해주는 것을 의미
  • 한 객체가 다른 객체를 사용할 때, 해당 객체를 직접 생성하지 않고 Spring이 주입해주는 방식
  • IOC를 구현하는 방식 중 하나

 


💡 개발자가 직접 관리하는 코드

  • 객체 간의 강한 결합을 유발한다.
  • 새로운 Service나 Repository가 생긴다면 클라이언트측 코드에 영향이 생긴다.

💡 Spring Container 가 관리 (IOC, DI)

 

  • 구현 코드가 변경되어도 클라이언트의 코드에는 영향이 없다.
  • 다른 구현체를 구현하여 Bean으로 등록하면 자유롭게 변경이 가능하다.
    • 위 예시 코드는 @Repository 로 등록된 빈이 중복되어 충돌이 발생한다.
  • 의존성 주입(DI), 제어의 역전(IOC)을 통해 객체 간의 결합도를 낮추고 유연한 설계가 가능해진다.

🚩 마무리

  1. IOC는 객체의 제어권을 개발자가 아닌 Spring 컨테이너에게 넘기는 개념으로, Spring이 객체 생성과 관리를 담당
  2. DI는 Spring이 객체 간의 의존성을 자동으로 주입해주는 기법
  3. 의존 관계 주입은 객체 간의 결합도를 낮추고 코드의 유연성과 테스트 가능성을 높여준다.

'TIL > Spring' 카테고리의 다른 글

<2025.04.17> Formatter  (0) 2025.04.17
<2025.04.15> HttpMessageConverter  (2) 2025.04.15
<2025.03.28> 객체 지향 설계 (SOLID 원칙)  (0) 2025.03.28
<2025.03.21> MVC 패턴  (0) 2025.03.21
<2025.03.20> Spring 입문 2주차  (0) 2025.03.20