본문 바로가기
Spring Framework

Dependency Injection 이란

by juneMiller 2022. 1. 3.

01.Object Dependencies(객체 의존성) 

현재 객체가 다른 객체와 상호작용을 하고 있다면 객체는 다른 객체에 의존성을 가진다.

 

public class PetOwner{
    private AnimalType animal;

    public PetOwner() {
        this.animal = new Dog();
    }
}
https://gmlwjd9405.github.io/2018/11/09/dependency-injection.html
  • PetOwner 객체는 AnimalTpte 객체(Dog)에 의존한다. 

02.Dependency Injection 

객체가 자체가 아니라 Framework 에 의해 객체의 의존성이 주입되는 설계 패턴

  • Framework 에 의해 동적으로 주입되므로 여러 객체간의 결합이 줄어든다.
  • Dependency Injection 은 Spring Framework에서 지원하는 IoC 형태 ( Inversion of Control) 

  1. 위 그림과 같이 Container 가 Bean 객체를 생성하고 종속성을 주입한다. 
  2. Dependency Injection 과 Inversion Of Control 은 같은 의미로 사용된다. 
  3. IoC : 프로그램 제어권을 framework 가 가져가는 것 

- 개발자가 모든 제어의 중심이나, 코드 전체에 대한 제어는 framework 가 한다. 

- 개발자 설성(xml,annotation) 을 하면 Container 가 알아서 처리한다.

- 즉, 우리는 Framework 속에서 프로그랭 하느 것 

 

 

의존성 주입의 방법 

01.Contructor Injection <constructor-arg ref="cat"></constructor-arg>

02.Method(Setter) Injection setter()를 통한 전달 , <property name="myName" value="poodle"></property>

03.Field Injection 멤버변수를 통한 전달 

 

장점 

1. 종속성이 감소하면서 변경에 민감하지 않다.

2. 재사용성의 증가  - 일부 인터페이스의 다른 구현 필요시, 코드 변경없이 components 를 구성

3. 더 많은 테스트 코드를 만들 수 있다. 

4. 코드읽기가 쉬워진다. 

 

 

More Detail...

'Spring Framework' 카테고리의 다른 글

Spring Framework 실행 순서  (0) 2022.01.03
Connection Pool ?  (0) 2021.12.30