Spring의 의존성 주입

  1. Spring의 의존성 주입
  2. 종속성 조회
  3. 의존성 주입

DI(종속성 주입)는 애플리케이션을 쉽게 관리하고 테스트할 수 있도록 프로그래밍 코드에서 종속성을 제거하는 디자인 패턴입니다. 종속성 주입은 프로그래밍 코드를 느슨하게 결합시킵니다. DI를 더 잘 이해하려면 먼저 DL(종속성 조회)을 이해해 보겠습니다.

종속성 조회

종속성 조회는 수요 후에 리소스를 얻는 접근 방식입니다. 예를 들어 리소스를 얻는 방법은 다양할 수 있습니다.

 A obj = new AImpl();  

이런 식으로 우리는 new 키워드를 통해 리소스(A 클래스의 인스턴스)를 직접 얻습니다. 또 다른 방법은 팩토리 메소드입니다.

 A obj = A.getA();  

이런 방식으로 우리는 정적 팩토리 메소드 getA()를 호출하여 리소스(A 클래스의 인스턴스)를 얻습니다.

또는 다음과 같이 JNDI(Java Naming Directory Interface)를 통해 리소스를 얻을 수 있습니다.

 Context ctx = new InitialContext(); Context environmentCtx = (Context) ctx.lookup('java:comp/env'); A obj = (A)environmentCtx.lookup('A');  

자원을 얻기 위해 자원을 얻는 방법은 다양할 수 있습니다. 이 접근 방식의 문제점을 살펴보겠습니다.

종속성 조회 문제

종속성 조회에는 주로 두 가지 문제가 있습니다.

    긴밀한 결합 종속성 조회 접근 방식을 사용하면 코드가 긴밀하게 결합됩니다. 리소스가 변경되면 코드에서 많은 수정을 수행해야 합니다. 테스트하기 쉽지 않음 이 접근 방식은 특히 블랙박스 테스트에서 애플리케이션을 테스트하는 동안 많은 문제를 야기합니다.

의존성 주입

종속성 주입은 프로그램의 종속성을 제거하는 디자인 패턴입니다. 이 경우 XML 파일과 같은 외부 소스의 정보를 제공합니다. 이는 코드를 느슨하게 결합하고 테스트하기 쉽게 만듭니다. 이러한 경우 다음과 같이 코드를 작성합니다.

 class Employee{ Address address; Employee(Address address){ this.address=address; } public void setAddress(Address address){ this.address=address; } }  

이 경우 Address 클래스의 인스턴스는 생성자 또는 setter 메소드를 통해 XML 파일과 같은 외부 소스에서 제공됩니다.

Spring 프레임워크에서 종속성 주입을 수행하는 두 가지 방법

Spring 프레임워크는 종속성을 주입하는 두 가지 방법을 제공합니다.

  • 생성자별
  • Setter 방식으로

Spring 의존성 주입의 다가오는 주제

생성자에 의한 의존성 주입

생성자를 통해 종속성을 주입하는 방법을 살펴보겠습니다.


Setter 메소드에 의한 의존성 주입

setter 메소드를 통해 의존성을 주입하는 방법을 살펴보겠습니다.