모르는게 많은 개발자

[Spring] DI 개념 정리 본문

스프링

[Spring] DI 개념 정리

Awdsd 2020. 3. 31. 22:21
반응형

스프링을 공부하면서 가장 먼저 배우는게 DI 의존성 주입이라 개념을 정리해보려 한다.

 

1. DI(Dependency Injection)

처음에 의존성 주입이라는 것을 보고 단어부터가 이미 너무 생소한 느낌을 받았지만 강의를 찾아보면서 개념을 쉽게 이해했다.

간단하게 예제 코드로 살펴보자.

class A1 {
    B b;
    
    public A1() {	//A라는 객체가 생성될 때 B라는 객체도 새롭게 생성 -> 의존성 높음
    	b = new B();
    }
}
class A2 {
    B b;
    
    public A2(B b) {
    	this.b = b    //Construction Injection
    }
    
    public setB(B b) {	//B객체를 외부에서 가져와 A객체에 Injection(주입) -> 의존성 낮음
        this.b = b;     //Setter Injection
    }
}

위 두개의 코드의 차이

  • A1은 객체가 생성될 때 B객체도 같이 직접 생성
  • A2는 객체가 생성되어도 외부 B객체(Dependency)를 주입(Injection)하는 형식
  • A2같은 방식이 DI라고 볼 수 있음

좀 더 이해가 쉽게

Dependency = 부품

Injection = 조립

으로 놓고 보면 A2객체인 부품에 B객체인 부품을 조립한다라고 해석 하면 좀 더 이해가 쉬울 것 같다.

 

2. DI 장점

  • 종속성 감소(변경에 민감하지 않음)
  • 재사용성 증가
  • 단위 테스팅의 편리함

 

 

참고

https://www.youtube.com/watch?v=WjsDN_aFfyw&list=PLq8wAnVUcTFUHYMzoV2RoFoY2HDTKru3T&index=3

반응형
Comments