본문 바로가기

Room 102. Back-end/Spring

[실전 개발자를 위한 Spring Framework ] 강의 - DI 개념

05강 DI에 대해

  • 목차
    • 내용
      • DI 개념
      • 스프링 컨테이너의 이해와 사용
    • 학습 목표
      • 스프링 DI 개념을 이해하고 예시까지!
      • 스프링 컨테이너의 역할과 동작 방식을 이해.
  • DI(Dependency Injection)의 개념
    • 간단하게 말하면, 객체 생성(new @@@())를 안하고 context 에, 컨테이너에 있는 객체를 injection 해줘서 사용하게 해줌. 
    • 각 클래스 간의 의존관계를 빈 설정(Bean Definition) 정보를 바탕으로 컨테이너가 자동으로 연결해 주는 것을 말함!
    • 개발자들은 단지 빈 설정파일에서 의존관계가 필요하다는 정보를 추가하면 됨.
    • 객체 레퍼런스를 컨테이너로부터 주입 받아서, 실행 시에 동적으로 의존관계가 생성됨.
    • 컨테이너가 흐름의 주체가 되어 애플리케이션 코드에 의존관계를 주입해주는 것.
    • 장점 
      • 코드가 단순해집니다.
      • 컴포넌트 간의 결합도가 제거됩니다.
  • DI의 유형
    • Setter Injection - Setter 메소드를 이용한 의존성 삽입
      • 의존성을 입력 받는 setter 메소드를 만들고 이를 통해 의존성을 주입합니다.
    • Constructor Injection - 생성자를 이용한 의존성 삽입
      • 필요한 의존성을 포함하는 클래스의 생성자를 만들고 
        이를 통해 의존성을 주입합니다.
    • Method Injection - 일반 메소드를 이용한 의존성 삽입
      • 의존성을 입력 받는 메소드를 만들고 이를 통해 의존성을 주입합니다.
  • Spring DI 컨테이너의 개념
    • Spring DI 컨테이너가 관리하는 객체를 빈(bean)이라고 하고, 이 빈(bean)들을 관리한단 의미로
      컨테이너를 빈 팩토리(Bean Factory)라고 부릅니다.
      Bean Factory 또는 Application Context 라고 부름!!!
  • Bean Factory 와 Application Context
    • Bean Factory
      • Bean을 등록, 생성, 조회, 반환을 관리함.
      • 보통은 Bean Factory를 바로 사용하지 않고,
        이를 확장한 Application Context를 사용함.
      • getBean() 메소드가 정의되어 있음!
    • Application Context
      • Bean을 등록 생성, 조회, 반환 관리하는 기능은 Bean Factory와 같음.
      • Spring의 각종 부가 서비스를 추가로 제공함.
      • Spring이 제공하는 Application Context 구현 클래스가 여러가지 있음.

 

  • 실습!
    • Service 클래스를 만들어 DAO를 참조.
    • Dependency Injection을 통한 참조.
      • Setter를 이용한 Injection

 

  • Constructor를 통한 Injection