[Boostcourse] 풀스택/웹 프로그래밍(풀스택)

Spring Core : 의존성 주입 DI (Dependency Injection) 구현 및 DI의 장점

Ben의 프로그램 2023. 7. 20. 23:11
728x90
의존성 주입이 없는 클래스 생성
의존성 주입이 없는 우리가 하던 방식의 클래스를 살펴보겠습니다. Engine 과 Car 클래스입니다. 

new 키워드를 사용하여 Engine 인스턴스를 생성한 이후에 Car 인스턴스를 생성할 때 사용하는 것을 볼 수 있습니다. 

 

의존성 주입 DI 구현 & 장점
이런 과정을 Spring 컨테이너가 하게 하려면 뭘 해야 한다고 했죠? 설정파일에다가 bean 태그를 등록해야 한다고 했었습니다

우선 bean 태그를 생성했는데요. 여기서 보아야 할 점은 Car 의 bean 태그입니다. Car bean 태그에 engine 을 set 하라고 말해줘야 합니다(우리의 코드에서 그렇게 했기 때문이죠). <property> 태그를 활용해 생성했습니다. engine 변수에 e 를 파라미터로 전달해주세요를 구현한 것입니다. 이제 공장을 통해서 클래스들을 사용해 보겠습니다. 

이렇게 객체에게 객체를 주입하는 것을 DI 라고 합니다. 이렇게 했을 때의 장점은 무엇인가요? 코드에 등장하는 것이 Car 클래스 하나만 있는 것을 볼 수 있습니다. 이 말은 사용자는 사용할 Car 만 알고 있으면 된다는 것이죠. 이 말이 의미하는 것은 다음과 같습니다. 사용자는 Car 만 알고 있으면 되며 현재는 Engine 클래스를 매개변수로 받지만 나중에 필요하다면 전기엔진 같은 클래스로 갈아 끼워 줄 수 있다는 것이죠. 다음과 같이 말이죠. 
그런데 실제로 사용자가 사용하는 코드는 어떤가요? 변한 것이 없습니다. 이것이 DI 의존성 주입의 장점니다. 

그런데 지금 이 방법도 계속해서 bean 태그를 추가해주고 설정을 해야하죠? 이런 불편함을 덜어내기 위해 더 나은 방법이 등장하는데요. 바로 @Annotation 을 활용하는 방법입니다. 다음시간에 이어서 공부하겠습니다.

 

 

 

출처 : boostcourse 웹 프로그래밍(풀스택) 
https://www.boostcourse.org/web316/lecture/20655?isDesc=false