https://www.youtube.com/playlist?list=PLq8wAnVUcTFUHYMzoV2RoFoY2HDTKru3T
스프링 강의를 듣고 정리한 내용입니다
DI(Dependency Injection)
객체를 생성하고 객체를 조립한다
Dependency들을 조립하기
1. 일체형으로 관계를 가진 경우
Composition has a
class A {
private B b; //종속 객체 == 부품
public A() {
b = new B();
}
}
2. 조립형으로 관계를 가진 경우
- 외부에서 생성하여 객체를 사용하는 방식을 사용한다
Association has a
class A {
private B b;
public A() {}
pulic void setB(B b) {
this.b = b;
}
** DI가 중요한 이유
일체형 프로그램과 조립형 프로그램이 존재할 때
결합도는 조립형이 더 낮기 때문에 코드 수정에 유연하다
DI를 조립하는 방식 2가지
1. setter로 조립(주입)
Setter Injection
B b = new B(); //Dependency
A a = new A();
a.setB(b); //Injection
2. 생성자로 조립(주입)
Construction Injection
B b = new B();
A a = new A(b);
두 코드 모두 B라는 객체를 A에 주입한다
이러한 조립형으로 구현하는 경우, 부품을 조립해야한다는 번거로움이 생긴다
-> 조립의 번거로움을 해결할 수 있는 도구를 사용한다
-> 이 기능을 제공하는 도구가 스프링이다
-> IoC 컨테이너로 관리한다
IoC 컨테이너
객체(부품)를 생성하고 조립을 할 때 소프트 웨어를 담는 그릇이 필요한데,
이 그릇을 컨테이너라고 한다
-> 그 중에서도 IoC 컨테이너라고 한다
xml 파일 혹은 Annotation을 이용하여 간편하게 사용 할 수 있다
결합해야 할 부품간의 순서 - DI 순서
결합형으로 만들어지는 프로그램은 일반적인 경우와 달리 역순으로 만들어진다
ex)
일체형이 A -> B -> C -> D의 순서로 부품이 만들어질 때
결합형은 D -> C -> B -> A의 순서로 만들어진 후 결합된다
IoC = Inversion of Control Container
-> 역순으로 객체를 생성하여 결합하는 컨테이너이다
'백엔드 > Spring' 카테고리의 다른 글
Spring - 값 형식 DI | TIL_151 (0) | 2022.10.10 |
---|---|
Spring - IoC 컨테이너(ApplicationContext) | TIL_150 (0) | 2022.10.06 |
Spring - DI 지시서 작성(xml) | TIL_149 (0) | 2022.10.03 |
Spring - DI 실습 | TIL_148 (0) | 2022.09.30 |
Spring 이론 | TIL_146 (0) | 2022.09.26 |