DI (의존성 주입)

Dasole Kwon·2022년 5월 28일
0

항해99

목록 보기
21/47

DI (의존성 주입) 지원

  • DI 통해 강한결합의 문제점을 해결 비즈니스 로직에 집중하게 해 줌

웹 서버에서는 비즈니스 로직이 가장 중요한 구현 부분
- 비즈니스 로직 외에 다른 부분은 스프링 프레임워크가 쉽게 구현 가능하도록 도움을 줌
1. Client 와의 communication 역할을 하는 Controller
2. DB 와의 communication 역할을 하는 Spring Data JPA

"강한결합"의 문제점: 각 Controller가 각 Service를 생성하여 사용하며, 만약 repository 생선자 변경이 있다면 모든 controller와 모든 service의 코드 변경이 필요하다.

"강한결합"의 해결방법: 각 객체애 대한 객체 생성은 딱 1번하며, 갱성된 객체를 모든 곳에서 재사용

<제어의 역전 Ioc:Inversion of Control>

  • IoC (제어의 역전)
    • 일반적으로는 사용자가 자신이 필요한 객체를 생성해서 사용하는데, 제어의 역전은 용도에 맞게 필요한 객체를 그냥 사용.
      • "DI (Dependency Injection)" 혹은 한국말로 "의존성 주입"이라고 부름.
    • 사용할 객체가 어떻게 만들어졌는지는 알 필요 없음
    • 실생활 예제) 가위의 용도별 사용
      • 음식을 자를 때 필요한 가위는? → 부엌가위 (생성되어 있는 객체 kitchenScissors)
      • 무늬를 내며 자를 때 필요한 가위는? → 핑킹가위 (생성되어 있는 객체 pinkingShears)
      • 정원의 나무를 다듬을 때 필요한 가위는? → 전지가위 (생성되어 있는 객체 pruningShears)

0개의 댓글