두 개의 클래스 또는 모듈이 의존관계에 있다고 말할 때는 항상 방향성을 부여해줘야 한다.
즉 누가 누구에게 의존하는 관계에 있다는 식이어야한다.
의존 관계 주입은 세 가지 조건을 충족하는 작업을 말한다.
1) 클래스 모델이나 코드에는 런타임 시점의 의존관계가 드러나지 않는다. 그러기 위해서는 인터페이스에만 의존하고 있어야한다.
2)런타임 시점의 의존관계는 컨테이너나 팩토리 같은 제3의 존재가 결정한다.
3)의존관계는 사용할 오브젝트에 대한 레퍼런스를 외부에서 제공해줌으로써 만들어진다.
https://velog.io/@re-deok/%EC%8A%A4%ED%94%84%EB%A7%81-IoC-DI-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88
B b = new B();
A a = new A();
a.setB(B);
B b = new B();
A a = new A(b);
https://www.youtube.com/watch?v=WjsDN_aFfyw
DI 이해가 생각보다 안가서 토비의 스프링, 구글링, 유튜브 등 여러 매체에 검색하다가
위의 유튜브 링크보고 DI를 이해함... 단어가 어려워서 단지 어렵게 느껴졌었던 것 같다;
뭘 종속하고 뭘 의존한다는게 그렇게 어려웠나보다
내가 이해한 DI를 쉽게 풀면 '부품'을 이야기하는 것이고. 위의 DI 방식에는 2가지가 있는데
일반적으로는 객체로 설정하여 부품을 갈아끼우는 등 원하는 것을 지정해준다.
이 때 스프링이 지정해둔 해당 부품을 자동으로 연결을 해주는 작업을 해준다.
그래서 스프링을 사용한다고 ..
결국 돌아가서 생각해보면 스프링 = 객체지향과 관련이 깊고 객체지향적인 프로그래밍을 위해서
작은 부품까지 객체 각 각의 역할을 하는 것으로 이해했다.
(틀렸다면..댓글로 좀 알려주세요;)