DI (Dependency Injection)

1c2·2024년 4월 15일
0

Spring Framework

목록 보기
3/5

Dependency Injection

  • 객체 간의 의존관계를 자신이 아닌 외부의 조립기가 수행
  • 제어의 역행(IoC)이라는 의미로 사용
  • DI를 통해 시스템에 있는 각 객체를 조정하는 외부 개체가 객체들에세 생성시에 의존관계를 주어짐
  • 느슨한 결합의 주요강점
    • 객체는 인터페이스에 의한 의존 관계만을 알고 있으며, 이 의존 관계는 구현 클래스에 대한 차이를 모르는 채 서로 다른 구현으로 대체가 가능.

스프링의 DI지원

  • Spring Container가 DI 조립기를 제공
    • 스프링 설정 파일을 통하여 객체 간의 의존관계를 설정
    • Spring Container가 제공하는 API를 이용해 객체를 사용

빈 생성범위

  • 싱글톤 빈

    • 스프링 빈은 기본적으로 singleton으로 만들어짐
    • 그러므로 컨테이너가 제공하는 모든 빈의 인스턴스는 항상 동일
    • 항상 새로움 인스턴스를 반환하게 하고 싶으면 scope를 prototype으로 설정

빈의 생성 범위 지정

스프링 빈 설정

  • 스프링 빈 설정 메타정보

스프링 빈 설정 : XML

  • XML 문서

    • XML 문서 형태로 빈의 성정 메타 정보를 기술
    • 단순하며 사용하기 쉬움
    • <bean> 태그를 통해 세밀한 제어 가능

스프링 빈 설정 : Annotation

  • Annotation
    • 어플리케이션의 규모가 커지고 빈의 개수가 많아질 경우 XML 파일을 관리하는 것이 번거로움
    • 빈으로 사용될 클래스에 특별한 annotation (@autowired)을 부여해 주면 자동으로 빈 등록 가능.
    • "오브젝트 빈 스캐너"로 "빈 스캐닝"을 통해 자동 등록
      • 빈 스캐너는 기본적으로 클래스 이름을 빈의 아이디로 사용(클래스 이름의 첫 글자만 소문자로 바꾼 것)
    • Annotation으로 빈을 설정할 경우 반드시 component-scan을 설정해야 한다.

스프링 빈 설정 : Java Configuration File

  • Annotation 기반 : @Configuration 적용

0개의 댓글