1.Ioc

 1) IoC의 개념

   IoC(제어권의 역전)이란, 객체의 생성, 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는것을 의미한다.

제어권을 프레임워크의 컨테이너가 가지고 있다.

  - IoC가 아닌경우 : 개발자가 new 통해 객체를 생성 관리한다.

  - IoC인 경우 : 프레임워크의 컨테이너가 객체를 생성하여 개발자의 코드에 주입을 시켜준다.

 

 2) IoC컨테이너

  객체의 대한 생성 및 생성 주기를 관리한다.

  - 객체의 생성을 책임지고, 의존관계를 관리해 준다.

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

  - 개발자가 직접 POJO를 생성할수 있지만 컨테이너에게 맡긴다.

 

  3) IoC의 분류

   - DL(의존성 검색) : 특정 컨테이너에 종속된 API 사용(EJB, Spring), 저장소에 저장되어있는 Bean에 접근하기 위해 컨테이터가 제공하는  API를 이용하여 Bean을 Lookup 하는것

   - DI(의존성 주입) : 주로 사용(Spring, PicoContainer), 각 클래스간의 의존관계를 빈 설정(Bean Definition) 정보를 바탕으로 컨테이너가 자동으로 연결해주는 것

  - DL 사용시 컨테이너 종속성이 증가하여, 주로 DI를 사용

 

2. DI

 1) DI 개념

  각 클래스간의 의존관계를 빈 설정(Bean Definition) 정보를 바탕으로 컨테이너가 자동으로 연결해주는 것을 말함

  - 빈 설정파일에서 의존관계가 필요하다는 정보를 추가(xml or annotation)

  - 실제 실행시에 컨테이너가 설정 정보를 읽어서 의존관계를 생성

  - 컨테이너가 흐름의 주체가 되어 애플리케이션 코드에 의존관계를 주입해 주는것

  - 장점 : 코드가 단순해지면 컨포넌트 간의 결합도가 제거

 

  2) DI의 유형

  - Setter Injection : setter 메서드를 만들고 이를 통해 의존성 주입

  - Constructor Injection : 클래스의 생성자를 만들고 이를 통해 의존성 주입

  - Method Injection : 일반 메서드를 만들고 이를 통해 의존성을 주입

 

3. Spring DI

  1) Spring DI 컨테이너의 개념

    Spring DI 컨테이너가 관리하는 객체를 빈(bean)이라고 하고, 이 빈(bean)을 관리한다는 의미로 컨테이너를 빈 팩토리(BeanFactory)라고 부름

  - Bean Factory에 여러 가지 컨테이너 기능을 추가하여 애플리케이션 컨텍스(ApplicationContext)라고 부름

 

  2) BeanFactory와 ApplicationContext

  - BeanFactory : Beand을 등록, 생성, 조회 반환 관리, 이를 확장한 ApplicationContext를 사용

  - ApplicationContext : BeanFactory기능에 추가적으로 Spring의 각종 부가서비스를 추가로 제공

 

 

+ Recent posts