본문 바로가기

_Programming/Spring

Spring.IoC&DI

일체형 컴퓨터가 있고, 조립형 컴퓨터가 있다면,, 무엇을 사겠는가..?

아마 고민하겠지 왜냐면 일체형 컴퓨터는 필요에 의해 부품을 갈아낄 수 있어 관리에 좋은 반면 조립을 직접 해야하는 문제가 있기 때문에

 

근데 만약 필요한 부품만 선택 했을 때 조립 해주는 서비스가 있다면..? 그것도 무료료?

나는 당연히 조립식 컴퓨터를 살 것이다.

 

그렇다면, 우리가 애플리케이션을 만들 때 이러한 조립 서비스를 제공해 준다면???

나같음 바로 사용하겠다!!

이런 서비스를 제공해 주는 프레임워크가 바로 Spring이다.

DI(Dependency Injection)

종속성 주입,, 이라는 말은 일단 접어두고

 

쉽게 설명하면

'부품(Denpendency) 을 주입(Injection)한다.' 라는 뜻으로

아래 코드와 같이 A,B객체를 따로 생성하여 A에 부품으로 B를 조립(주입)하는 것이다.

 

조립하는 방법

1. Setter Injection

2. Construction Injection

//Setter
B b = new B();
A a = new A();

a.setB(b);

//Construction
B b = new B();
A a = new A(b);

 

맨 처음의 내용과 같이 우리가 조립식을 이용할 때 가장 걱정하는 부분은 조립이다.

그래서 조립 서비스를 이용했으면 하는데

그 서비스를 제공하는 것이 Spring이다.

Spring의 객체지향이 여기서 나오는 것이다. 객체를 생성하고 조립해 주는 능력.

이 것이 Spring의 가장 중요한 부분 중 하나이다.

 

내가 원하는 부품이 뭐가 있는지 그들이 어떠한 부품 결합을 하길 원하는지만 결정해주면 나머지는

Spring이 알아서 해준다.

IoC(Inversion of Control)

일체형과는 반대의 순서로 조립 되기 때문에 이를 역행 이라고 하여 loC라 한다.

 

컨테이너 : 주문서에 입력되어 있는 내용대로 객체를 생성해서 담을 수 있는 그릇. 종류에 따라 xx컨테이너 라고 명명.

우리 원하는 부품들을 생성, 조립까지 해줘서 컨테이너에 담아준다.

이 컨테이너를 IoC 컨테이너라고 하는데

역순으로 객체를 생성하는 컨테이너를 의미한다.

 

보통 작은 부품 -> 큰 부품 만들고 조립 반복.

보통 일체형에서는 A클래스 생성시 B,C,D, 순서대로 만들어지지만

조립형에서는 반대로 D가 만들어지고 C -> B -> A 순의 역순으로 만들어지기 때문에 IoC라는 말을 붙이게 되었다.

 

 

 

'_Programming > Spring' 카테고리의 다른 글

Error.스프링 셋팅 관련 폴더 에러  (0) 2020.07.29
Error.한글깨짐  (0) 2020.07.24
Spring.TeamProject (Cpos)  (0) 2020.07.13
Spring.Security_basic  (0) 2020.07.07
Spring.AOP(Aspect-Oriented Programming)  (0) 2020.07.06