DI (Dependency Injection)
▷프로그래밍에서 구성 요소간의 의존 관계가 소스코드 내부가 아닌 외부의 설정파일을 통해 정의되게 하는 디자인 패턴
▷Spring에서는 이러한 의존성 관계가 있을 때 프레임워크가 작업을 처리해줌.
위와 같을 때 (Class A가 ServiceA와 ServiceB에 종속) ClassA에 대한 독립적 테스트가 어렵고, 종속성의 변경이 있을 때 ClassA의 소스 코드를 변경해야 한다. 또한 ClassA에는 종속 관계를 정의, 지정 및 관리하기 위한 반복적인 코드가 들어가게 되는 문제점 들이 생긴다.
이러한 문제를 해결하기 위해서 Class 내에서 종속성을 인스턴스화 하지 않고, 종속성의 유효한 인스턴스를 얻게 위해 객체의 생성 및 초기화를 빌더 객체를 통해서 한다.
유형
▷세터 주입 : 의존성을 입력받는 세터(Setter)메소드를 생성하고 이를 통해 의종성 주입
// 1
public void setService(Service service){
this.service = service;
}
// 2
One o1 = new One();
Two t1 = new Two();
t1.setOne(o1);
▷생성자 주입 : 필요한 의종성을 모두 포함하는 클래스의 생성자를 만들고 그 생성자를 통해 의존성을 주입
// 1
Cilent (Service service){
this.service = service;
}
// 2
One o1 - new One();
Two t1 = new Two(o1);
▷인터페이스 주입 : 의존성을 주입하는 함수를 포함하고 있는 인터페이스를 작성하고 이 인터페이스를 구현하도록 함으로써 실행시 이를 통해서 의존성 주입
'WEB > Java' 카테고리의 다른 글
StringEscapeUtils (1) | 2023.02.23 |
---|---|
Scanner, BufferedReader (0) | 2017.01.31 |
Spring Framework : 개념 (0) | 2017.01.03 |
String (0) | 2017.01.03 |
제네릭 (0) | 2017.01.03 |