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