2016년 10월 24일 월요일

64day / Framework / spring IoC

드디어 끝판왕 spring을 배우기 시작했다!


  • Inversion of Control 

: 제어의 역행
계층간 의존관계의 결합도를 낮추기 위해 사용한다 
의존관계에서 의존대상을 의존하는 측에서 직접 생성하는 것이 아니라 
제어권한을 다른 대상( ex : Spring Container )에게 위임하는 방식 
  1. 객체를 관리하는 컨테이너를 제공
  2. 컨테이너에 객체를 담아 두고 필요할 때 가져와서 사용
  3. 컨테이너 역할을 수행하는 인터페이스, BeanFactory와 ApplicationContext 

기존의 개발자들이 new 연산자, 인터페이스 호출, 팩토리 호출등으로
객체의 인스턴스 생성방법을 제어하는 권한을 가지고 있었으나
ioC컨테이너가 인스턴스의 생명주기를 관리를 생성부터 소멸까지 진행한다

    출처 : 자바지기
  • DL : Dependency Lookup 검색 
: 의존대상을 검색을 통해 확보 -> 의존대상을 검색을 통해 확보 

  1. 스프링에서 자동으로 해준다
  2. JNDI : Java Naming and Directory Interface
  3. 의존관계가 많아 질수록 어플리케이션에 종속된다

( 참고 : IOC 기반이 아닌 경우에는 의존 대상을 직접 생성해 사용)

  • DI : Dependency Injection 주입 
: 의존관계를 주입을 통해 설정 -> 의존대상을 주입을 통해 확보 

  1. 스프링 IoC 컨테이너 핵심 개념 중 하나
  2. 다양한 프레임워크에 이미 적용되어 있는 기능
  3. 객체 간의 의존 관계를 외부의 조립기가 관리
  4. 불필요한 의존 관계를 없애거나 줄일 수 있음
  5. 단위테스트 수행 수월
  6. 설정파일과 애노테이션을 이용하여 객체 간의 의존 관계를 설정
  7. 각 객체를 빈(bean)으로 관리

( 참고 : IOC 기반이 아닌 경우에는 의존 대상을 직접 생성해 사용)

  • Setter Injection
Class 사이의 의존관계를 연결시키기 위해 Setter 메소드를 이용하는 방법.

  • Constructor Injection
Class 사이의 의존관계를 연결시키기 위해 생성자를 이용하는 방법.

  • Method Injection
Setter Injection과 Constructor Injection이 가지고 있는 한계점을 극복하기 위하여 지원
Singleton 인스턴스와 Non Singleton 인스턴스의 의존관계를 연결할 필요가 있을 때 사용한다.

역시 자바지기 자료가 좋은 것 같다

0 개의 댓글:

댓글 쓰기