DI

이지윤·2022년 4월 3일
0

Dependency Injection

  • 엔터프라이즈 애플리케이션 개발할 때, 하나의 기능을 처리하기위해 여러 개의 컴포넌트를 조합해서 구현하는 경우가 일반적
    • 데이터베이스 컴포넌트
    • GUI 관련 컴포넌트
    • 외부 접속 컴포넌트
    • 다양한 오픈소스 라이ㅂ러리
  • 여러 개의 컴포넌트를 통합할 때 의존 관계 주입 디자인 패턴이 매우 효과적

DI

  • 의존 관계 주입
  • 오브젝트 간의 의존관계를 만듬
  • 스프링 프레임워크는 런타임 시 사용할 객체들의 의존 관계를 부여함
  • 객체 간의 결합도를 낮춤

IOC

  • 역전 제어 -> 인스턴스를 제어하는 주도권이 역전
  • 컴포넌트를 구성하는 인스턴스 생성과 의존 관계 연결을 개발자의 소스코드가 아닌 DI 컨테이너가 대신해주기 때문에 제어가 역전되었다고 정의

IOC 컨테이너

  • 스프링 프레임워크에서 제공하는 IOC 컨테이너를 통해 인스턴스의 생명주기 관리 및 의존 관계 주입을 처리

일반적인 애플리케이션 의존 관리 - new 연산자 사용

  • MemberSampleMain이 MemberService를 new로 생성
  • MemberService가 MemberDao를 new로 생성
  • 각각의 인스턴스를 이용(Main -> Service -> Dao)

DI 컨테이너를 활용한 애플리케이션 : new 연산자 제거

  • MemberService 인스턴스, MemberDao 인스턴스는 DI 컨테이너가 생성 및 관리
  • MemberDao 인스턴스를 MemberService에 인젝션(의존 관계 주입)

DI 컨테이너를 활용한 애플리케이션 : 인터페이스 기반의 컴포넌트화

  • 인터페이스 기반의 컴포넌트화를 실현하려면 MemberService와 MemberDao를 인터페이스함
  • 구현 클래스는 인터페이스 이름에 Impl을 덧붙임
profile
초보자

0개의 댓글