Dependency Injection & Inversion of Control

  • IoC - 유저가 instantiate 하지않고, 프레임워크에서 종속그래프 상위의 어떤거부터 instantiate 해서 내려보내도록.
  • loosely and pluggability. 하드코딩한단건 우리가 220 소켓에다가 납땜하는거랑 똑같다. 리팩토링 어렵다.
  • Dependency injection - MysqlDatabase 가 아니라 걍 database 이런식으로.
  • 문제 1. unit test 힘들다. mysql에 종속이기 때문이다. mock instance 를 만들수없음. 문제 2. mysql 말고 딴 db를 쓸수가없다. 리팩토링 힘들다.
  • 제어흐름을 바꾼다. Lifecycle 을 내가 만드는게 아니라 프레임웍이 알아서 하고 나한테 알아서 인스턴스가 떨어지게.
  • Testability mysqldatabase 인스턴스를 mock 할 수 있다? MysqlDAtabase 말고 abstraction에 해당하는 interface를 만들어주고, 다른데서 그걸 사용해야한다.
  • dependency injection 한거다. 종속성을 아래쪽으로 보낸것. 아래쪽에서 어떤 db를 쓰는지를 모르고 그냥 시킨게 아니라 상단에서 지정해줬기 때문이다. control graph 상단에서.
  • global context에서 인스턴스들을 생성해준다. 이제 종속성 xml configuration 으로 수도코드를 작성해볼껏.
  • 빈 안에 reference type을 넣어준다. ref의 id를 지정해주면 종속성이 생긴다.
  • spring은 이런 user object 그냥 선언만 하고 autowire 어노테이션 해주면 알아서 채워줄것이다. construct 자동으로 해주는것.

MEKA

Composed 191 Viments

14

Published on Nov 15, 2020

Send Viment

Comments 0

Viments for this video by others

There's no pre-existing Viments

Facebook Kakao Naver Twitter

Embed

Copy & Paste following HTML

Viment Text

Copy & Paste following Text