코린이의 기술 블로그

DI(Dependency Injection) 본문

Java Web

DI(Dependency Injection)

미늬온 2021. 11. 9. 22:58

DI(Dependency Injection)
의존성 주입으로 스프링 컨테이너가 지원하는 핵심개념
웹 애플리케션에서 구성 요소간의 종속성을 소스 코드에서 설정하지 않고, 외부의 설정 파일 등을 통해 주입하도록 하는 설계 패턴 입니다.

스프링 의존성 관리 방법
스프링은 IoC(제어의 역행)를 두가지 형태로 지원합니다.

  • Dependency Lookup
  • Dependency Injection 주입을 주로 사용

Dependency Injection : ex. Circle c=new Circle(); 객체를 생성하기 위해 사용

  • Setter Injection (세터 인젝션) : setter 메서드로 클래스 사이의 의존관계 설정
  • Constructor Injection (생성자 인젝션) : 생성자를 통해 의존관계 설정

기존의 클래스에서 xml(텍스트이기 때문에 변경이 쉬움)로 이동
(1)생성자 기반의 DI
usebean의 방식과 비슷합니다.

  • index : Constructor의 몇번째 인수의 값 전달
  • type : Constructor의 어느 데이터형의 인수에 값을 전달
  • ref : 자식요소 <ref bean="bean의 명"/>대신 사용
  • value : 자식요소 <value></value> 사용가능

(2)Setter 기반의 DI
인수가 없는 static 팩토리 메서드 호출 후 빈의 setter를 호출하여 틀래스간의 의존관계 설정
<property name="필드명" value="값" />

  • 이너빈(inner Bean)
  • 부모 빈 참조 : 상속개념
  • 컬렉션(Collection) : ArrayList, Map, Set, Properties
태그 타입 설명
<list> java.util.List, 배열 배열의 값 목록 전달
<map> java.util.Map <키, 값> 목록 전달
<set> java.util.Set 값 목록 전달
<props> java.util.Properties <프로퍼티이름,프로퍼티 값> 목록 전달

(3)XML 네임스페이스
XML 네임스페이스는 <property> 대신 간단하게 설정하는 방법입니다.

728x90

'Java Web' 카테고리의 다른 글

스프링 어노테이션  (0) 2021.11.11
의존 관계 / 생성자 인젝션 / Setter 인젝션  (0) 2021.11.10
스프링 컨테이너  (0) 2021.11.08
IoC(Inversion of Control) 컨테이너  (0) 2021.11.07
스프링 프레임워크의 특징  (0) 2021.11.06
Comments