프로그래밍

Spring의 특징 이해하기 [Di, IoC]

제이비:D 2016. 12. 26. 00:57

Spring의 특징 DI, IoC

개념 확실하게 정리하셨나요?


DI, IoC 개념 알듯 모를듯 했는데

설명 너무 잘 해주신 유투브 동영상 참고!


/* 유투브 보고 공부한 내용 한번 더 정리 해 봅니다. */


DI란?

의존성 주입

원하는 부품 목록을 작성하면, Spring이 조립해준다.

필요한 객체는 스프링을 통해서 주입받는 구조.


어노테이션(@)을 통하여 객체 간 의존 관계를 설정.

객체 자체를 직접 생성 또는 검색 할 필요가 없음.




예를들면, 

Family Has-a Father,Mother

관계를 구현 할 경우




스프링의 경우 

Family 객체만 생성하면

Father,Mother 객체는 자동으로 생성된다.

*Family와 Father,Mother 객체의 LifeCycle(생성 및 소멸) 동일

Family fam = new Family();



스프링이 아닌 경우는

Father,Mother 객체를 생성해서 Setter메소드를 통해 주입해주어야 한다.

Father papa = new Father();

Mother mom = new Mother();


Family fam = new Family();


fam.setterFather(papa);

fam.setterMother(mom); 


위 소스 내용을 그림으로 표현해 보면 아래와 같다.

첫번째 소스가 객체가 생성되는 순서가 역순이므로

IoC 개념 요기잉네!



의존을 주입하는 방법.세가지.

1. Setter Injection : setter 메소드를 통해 Injection 수행

2. Construction Injection : 객체 생성할 때 Injection 수행 (eg. Family fam = new Family(papa,mom); ) 

3. Interface Injection


IoC Container

필요한 객체를 생성해서 주입 수행

위 소스를 보면 스프링을 사용할 경우 Father,Mom 객체 생성을 별도로 수행하지 않는다.

IoC Container가 Father,Mom 객체 생성 해서 Family 객체에 Injection 처리해준다