Kim VamPa

[스프링]의존성 주입(Dependency Injection) 본문

스프링 프레임워크

[스프링]의존성 주입(Dependency Injection)

Kim VamPa 2020. 3. 30. 09:27
728x90
반응형

개인 공부 후 자료를 남기기 위한 목적이기에 내용 상에 오류가 있을 수 있습니다.


목표

  • 의존성 주입이 무엇인지 이해한다.
  • 의존성 주입의 장점에 대해 이해한다.

목차

1. 의존성 주입

 

1. 의존성 주입

의존성(Dependency) 

"하나의 객체가 다른 객체 없이 제대로 된 역할을 할 수 없다는 것"

- A객체가 B객체 없이 동작이 불가능한 상황을 'A가 B에 의존적이다'라고 표현합니다.

 

주입(Injection)

"외부에서 밀어 넣는 것"

 

의존성주입(Dependency Injection)

"어떤 객체가 필요한 객체를 외부에서 밀어 넣는것"

- 의존성 주입의 장점은 "주입을 받는 입장에서는 어떤 객체인지 신경 쓸 필요가 없다", "어떤 객체에 의존하든 자신의 역할은 변하지 않는다" 입니다.

- 스프링은 ApplicationContext를 통해서 객체들을 관리하여 의존성 주입을 구현합니다.

- 스프링에서 'ApplicationContext'가 관리하는 객체들을 '빈(Bean)'이라고 불립니다.

- 빈과 빈사이의 의존관계는 "xml설정", "어노테이션설정", "Java 설정"방식을 통해서 정의 할 수 잇습니다.(의존관계 설정 방법)

 

 

예시1) 음식점, 프렌차이즈 음식점

- 음식점은 '식재료'가 없으면 음식을 팔수가 없습니다. 따라서 음식점은 식재료에 의존적입니다.

- 보통의 음식점은 음식을 팔기위해 '식재료'를 사러 가야합니다.

그림 1-1

- 프렌차이즈 음식점 경우 '식재료'를 직접 사러 갈 필요가 없이 대행업체에서 배송해 주는 '식재료'를 사용하기때문에 장사에만 집중할 수 잇습니다.

그림 1-2

 

예시2) 스프링 에서의 객체

- A객체, B객체가 있고 A객체는 B개체에 의존적이라고 가정합니다.

- A객체는 자신의 역할을 수행하기 위해 B객체를 직접 호출하여 자신의 역할을 수행하게 됩니다.

그림 1-3

- 의존성 주입을 적용한 경우 A객체는 스프링(ApplicationContext)에 B객체가 필요하다는 요청을 보냅니다.

- 이에따라 스프링(ApplicationContext) B객체를 호출하여 A객체에 주입합니다.

그림 1-4

 

결론

  • 의존성 주입이란 "어떤 객체가 필요한 객체를 외부에서 밀어 넣는다"는 의미입니다.
  • 스프링은 ApplicationContext라는 존재를 통해서 의존성 주입 기능을 실행합니다.
  • 의존성 주입을 통한 장점은 "주입을 받는 입장에선 어떤 객체인지 신경 쓸필요 없다"는 점과 "어떤 객체에 의존하든 자신의 역할은 변하지 않는다"는 장점이 있습니다.

 

Reference

  • "코드로 배우는 스프링 웹 프로젝트"(남가람북스)

 

Date

  • 2020.03.30 작성

 

 

 

 

728x90
반응형
Comments