WEB/Spring

Dependency Injection 의존성 주입

Gh1324 2024. 1. 10. 16:57
728x90

 

 

 

 

 

dependency Injection 은 스프링 공부하면서 자주 들었던 키워드이다.

 

정확한 개념을 알아두고 싶어 정리해본다.

 

 

  • 의존성이란

A 클래스에서 B 클래스를 사용할 때  A클래스는 B클래스에 의존적이라고 할 수 있다.

class A{

	B b = new B();
}
class b{
//
}

 

 

  • 의존성 주입

의존성이 있는 코드를 넣어준다는 의미로 A클래스에서 B클래스를 직접 생성하는 것이 아닌 B클래스를 외부에서 미리 생성하여 인스턴스를 사용하는 것을 의미.

 

spring의 다른 특징, inversion of control(제어의 역전) 과도 연관이 있다.

 

  • 제어의 역전

일반적으로 class A가 classB를 생성하여 사용하나 제어의 역전의 경우 중간의 매개체가 생겨 제어권을 일임하는 것.

 

이 매개체를 IoC(Inbversion of Control) Container이라고 한다. 

 

IoC는 개발자에게서 일임받은 제어권을 사용하여 의존성을 관리하고 인스턴스를 생성해주고 나중에는 메모리를 해제하는 역할을 수행, 

 

rest API, Spring과 같은 framework에 IoC container가 포함되어있다.

 

 

  • 결론

의존성 주입은 IoCContainer라는 매개체를 두고 여기에 필요한 모든 모듈을 등록해두고

사용처에서 직접 생성하는 것이 아닌 필요할 때 Ioc Container가 의존성이 있는 모듈들을 주입해주는 방식

의존하는 모듈의 생성과 해제, 주입 등의 일련의 제어과정을 IoC Container 의 기능을 포함하는 framework들에게 줌으로써 제어의 역전이 일어나게 됨

 

  • 장점
    • 의존성 감소
      • 변화에 강함
      • 재사용성이 더 좋아짐
      • 유지보수 용이
    • 코드양 감소
    • 테스트 용

 

출처 5분개발지식 : https://youtu.be/1vdeIL2iCcM?si=kxlgxYTzj_MqMQY8

728x90

'WEB > Spring' 카테고리의 다른 글

[spring] 프로젝트 이름 안보이게 하기  (0) 2022.01.30
DI (dependency injection) 의존성 주입  (0) 2022.01.04
게시판에 파일 저장하기  (0) 2021.12.23
EL의 데이터 저장소  (0) 2021.10.14
JSP 내장객체  (0) 2021.10.13