본문 바로가기

플밍 is 뭔들/SPRING

[SPRING] DI 란...?

※ DI (Dependency Injection) 란?

  1. 의존성 주입이란 말로도 쓰이며 스프링 IOC 컨테이너 핵심 개념 중 하나이며 이미 다양한 프레임워크에 적용되어 있다.
  2. 객체 간의 의존 관계를 외부의 조립기가 관리
  3. 불필요한 의존 관계를 없애거나 줄일 수 있다.
  4. 단위테스트 수행이 수월하다.
  5. 설정파일과 어노테이션을 이용하여 객체간의 의존 관계를 설정
  6. 각 객체를 빈(bean)으로 관리


※ 그림으로 보는 DI 관계
    
    - 의존성 주입 즉 객체를 생성하는게 아니라 객체를 외부에서 생성해서 주입시켜주는 방식

  • 기존 객체생성법
        - 특정 객체에서 A라는 객체와 B라는 객체를 직접 생성하고 있다


  • 방법2) DI 방식의 객체생성법
        - 외부에서 생성된 객체를 setter()나 생성자를 통해 사용하는 방법이다.


※ DI방법의 장점

 - Main 객체에서 객체A, 객체B를 생성해서 사용해보았다고 생각해보자. 그러면 Main객체와 A,B의 의존성이 높아질 수 
   밖에 없다. 만약 Main 객체이건 객체A,B 이건 변경사항이 있다면 서로에게 영향을 줄 수 밖에 없다.
   하지만 아래 그림처럼 미리 객체를 만들어 놓고 그 객체를 주입받아 사용한다면???
   객체끼리의 불필요한 의존성을 없애거나 줄일 수 있게된다.