IoC & Container

mingggkeee·2022년 4월 17일
0

IoC(Inversion of Control)

  • 제어의 역행
  • 객체지향 언어에서 Object간의 연결 관계를 런타임에 결정
  • 객체 간의 관계가 느슨하게 연결됨(Loose Coupling)
  • IoC의 구현 방법 중 하나가 DI

Dependency Lookup

  • 컨테이너가 lookup context를 통해 필요한 리소스나 객체를 얻는 방식
  • Lookup한 객체를 필요한 타입으로 캐스팅 해줘야 한다.
  • Naming Exception을 처리하기 위한 로직이 필요

Dependency Injection

  • 객체에 lookup 코드를 사용하지 않고 컨테이너가 직접 의존 구조를 객체에 설정하는 방식
  • 객체가 컨테이너의 존재여부를 알 필요가 없다
  • Setter Injection과 Contructor Inject

Container

Container?

  • 객체의 생성, 소멸, 사용에 해당하는 라이프사이클 담당
  • 라이프사이클을 기본으로 애플리케이션 사용에 필요한 주요 기능을 제공해준다.

Container 기능

  • 라이프사이클 관리
  • Dependency 객체 제공
  • 스레드 관리
  • 기타 애플리케이션 실행에 필요한 환경

Container 필요성

  • 비즈니스 로직 외 부가적인 기능들에 대해서는 독립적으로 관리되도록 하기 위함이다.
  • 일관성
  • 서비스 객체를 사용하기 위해 각각 Factory 또는 싱클톤 패턴을 직접 구현하지 않아도 된다.

Ioc Container

  • 객체의 생성과 관계설정, 사용, 제거 등의 작업을 독립된 컨테이너가 담당
  • 컨테이너가 코드 대신 객체에 대한 제어권을 갖고 있어 IoC라고 부른다.

Spring DI Container

  • Spring DI Container가 관리하는 객체를 빈(Bean)이라 하고, 이 객체들의 라이프사이클을 관리하는 의미로 BeanFactory라 한다.
  • BeanFactory에 여러가지 컨테이너 기능을 추가한 것은 ApplicationContext라 한다.
profile
만반잘부

0개의 댓글