logo

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 메소드를 통해 의존성을 주입하는 방법을 살펴보겠습니다.