[Spring] DI(Dependency Injection)
※ 본 내용은 강의를 수강하며 정리한 글입니다 👉 강의 링크
DI (Dependency Injection)
DI는 ‘종속성 주입’, 결론부터 말하자면 ‘부품 조립’에 해당한다.
Dependency = 종속성
Injection = 주입
두 단어 모두 난해하게 느껴진다.
아래에서 두 단어가 각각 의미하는 바를 알아보도록 하자.
Dependency = 종속성 = 부품
프로그램은 객체들의 조립관계로 만들어진다. 객체는 곧 부품이다.
이를테면, A class에서 B를 객체화해서 사용하는 경우를 생각해보자.
1. 일체형 관계 (A class가 생성될 때 A가 직접 B를 생성해서 사용)
class A
{
private B b;
public A() {
b = new B();
}
}
2. 조립형 관계 (A 객체에 B 객체를 조립할 수 있는 메서드(setter = setB)를 제공)
class A
{
private B b;
public A() {
}
public void setB(B b) {
this.b = b;
}
}
위 두가지 방법이 있을 수 있다.
여기서 B는 A의 부품(Dependency)이다.
Dependency = 종속성 = 종속 개체
그래서 DI가 왜 중요할까?
개발을 할 때 일체형보다는 조립형이 결합도가 낮아지므로, 이를 선호하는 경향이 있다.
아무튼 조립형 관계를 많이 사용한다는 뜻이다.
그리고 조립형의 경우, A라는 객체에 B라는 객체(B=부품)을 조립해주는 과정이 필요하다.
코드로 표현하면 아래와 같다.
B b = new B();
A a = new A();
a.setB(b);
B 객체를 조립해서 A 객체에 주입하는 과정이 바로 DI인 것이다.
다시 정리하자면 이 때, 부품인 B 객체를 Dependency라 하고,
이 부품을 A 객체에 조립 = 주입 = Injection 이라 한다.
Injection = 주입 = 조립
injection의 방법에는 두가지가 있다.
정리
Spring의 주요 기능은 DI, 즉 Dependency(부품)을 Injection(조립)해주는 역할을 하는 것이다.
사용자가 원하는 부품이 뭐가 있는지, 또 어떤 결합을 하기를 원하는지만 설정해주면 Spring이 조립의 과정을 알아서 해준다.
조금만 더 구체적으로 말하자면,
스프링은 결합을 할 때 필요한 설정 파일을 제공하고, 객체를 결합해주는 역할을 한다.
여기서 말하는 '설정 파일'은 아래 링크에서 언급한 '외부 설정 파일'과 비슷한 기능일 것이다.
https://heyitzme.tistory.com/39
[Java] 인터페이스의 구현 - 코드 수정을 없애기 위한 설정
※ 본 내용은 강의를 수강하며 정리한 글입니다 👉 강의 링크 https://heyitzme.tistory.com/38 [Java] 인터페이스의 구현 ※ 본 내용은 강의를 수강하며 정리한 글입니다 👉 강의 링크 초기 상태 초기 상
heyitzme.tistory.com