IoC,DI란?


Ioc

DI

Spring Di 컨테이너


IoC(제어의 역전)란?

- 제어권이 바뀐다.(사용자가아님 프레임워크가 제어권을가진다.(컨테이너))

- 개발자가 객체직접생성하지않는다.(컨테이너가 생성된다.)


IoC 의존관계를 결정,설정,생명주기를 해결하기위한 디자인패턴


IoC가아닌경우

-사용자가 New로 생성한다.

ex)


IoC이면

-new 생성직접안한다.

ex)


IoC컨테이너(제어권 가지고있음)

-객체 생성 생명주기 관리한다.

-의존성관리.

-POJO의 생성,초기화,서비스,소멸에 대한 권한을 가진다.


IOC분류

DL

DI


DL 의존성 검색(특정 컨테이너에 종속되는API사용)

- 저장소에 저장되어 있는 Bean에 접근하기 위해 컨테이너가 제공하는 API를 이용하여 Bean을 Lookup하는것이다.

- 컨테이너가 제공하는 API를사용하기때문에 컨테이너에 종속성이 늘어난다.

- EJB

- Spring

DI 의존성 주입(주로 많이사용)

-각 클래스간의 의존관례를 빈설정 정보를 바탕으로 컨테이너가 자동으로 연결해주는것이다.

-spring

-PicoContainer

-SetterInjection(셋터통해 주입)

-Constructor(생성자통해 주입)

-Method(자바메서드통해주입)



DI개념(의존관계주입)

-의존관계 빈설정(사용자가 설정해줌) 어노테이션등등이 있다.

-컨테이너가 정보들을읽고 자동으로 설정해준다.

개발자의 역할

-의존관계 설정해준다. (어노테이션)

ex)



컨테이너가 흐름의 주체가 된다.(사용자가 설정해준것을 컨테이너가 연결한다.)


장점

-코드가 단순해진다.

-컴포넌트 간의 결합도가 제거된다.

ex)컨트롤러에서 서비스호출 New로 하지않는다.


3가지 유형

-SetterInjection (셋터통해 주입)

-Constructor (생성자통해 주입)

-Methodinjection (자바메서드통해주입)


클래스 호출방식

클래스->인터페이스->구현클래스

연결은 호출이 아닌 XML(설정파일)읽어와 의존성을 삽입해준다.

SetterInjection(한번에 한개씩) 

beans.xml

Hello.java


Constructor Injection(생성자생성)

beans.xml


Hello.java



Spring DI 컨테이너

- Spring DI컨테이너가 관리하는 객체를 빈(bean)이라고 하고, 

빈(bean)들을 관리한다는 의미로 컨테이너를 빈 팩토리(BeanFactory)라고 부른다.

- SpringAPI에서 BeanFactory 인터페이스제공한다.

- BeanFactory에 여러가지 컨테이너 기능을 추가하여 애플케이션 컨텍스라고부른다.


BeanFactory 

- Bean을 등록,생성 조회,반환 관리한다.

- 보통은 BeanFactory를 바로 사용하지 않고, 이를 확장한 ApplicationContext를 사용한다.

- getBean() 메서드가 정의되어있다.

ApplicationContext  <-DI컨테이너 역할을한다.

- Bean을 등록,생성,조회,반환 관리하는 기능은 BeanFactory와 같다.

- Spring의 각종 부가 서비스를 추가로 제공한다.

- Spring이 제공하는 ApplicationContext 구현 클래스가 여러가지 종류가있다.



'개발 소발 > 개발 Spring' 카테고리의 다른 글

Bean등록 및 메타정보구성이란?  (0) 2017.11.21
bean,properties설정이란?  (0) 2017.11.20
Junit,Spring-Test란?(의존성예제)  (0) 2017.11.20
STS,maven이란?  (0) 2017.11.20
Spring프레임워크란?  (0) 2017.11.20

+ Recent posts