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 을 활용하는 방법입니다. 다음시간에 이어서 공부하겠습니다.