DI의존관계 주입

송수용·2022년 6월 5일
0

백엔드의 기술

목록 보기
2/11

DI

의존관계

  • 두 개의 클래스 또는 모듈이 의존관계에 있다고 말할 때는 항상 방향성을 부여해줘야 한다.
    즉 누가 누구에게 의존하는 관계에 있다는 식이어야한다.

  • 의존 관계 주입은 세 가지 조건을 충족하는 작업을 말한다.
    1) 클래스 모델이나 코드에는 런타임 시점의 의존관계가 드러나지 않는다. 그러기 위해서는 인터페이스에만 의존하고 있어야한다.
    2)런타임 시점의 의존관계는 컨테이너나 팩토리 같은 제3의 존재가 결정한다.
    3)의존관계는 사용할 오브젝트에 대한 레퍼런스를 외부에서 제공해줌으로써 만들어진다.

DI의 장점 관심사의 분리

  • 유연하고 확장성이 뛰어나다.
    = 변경이 있을 때 수정이 쉽다.
    = 수정할 부분만 수정하면 된다.
    = 관심사의 분리가 잘 이루어졌다.

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

DI 방법 2가지

  • Setter Injection
B b = new B();
A a = new A();

a.setB(B);
  • Construction Injection 🎈
B b = new B();
A a = new A(b);

https://www.youtube.com/watch?v=WjsDN_aFfyw

Spring에서 제공하는 IoC/DI 컨테이너

  • BeanFactory : IoC/DI에 대한 기본 기능을 가지고 있다.
  • ApplicationContext : BeanFactory의 모든 기능을 포함하며, 일반적으로 BeanFactory보다 추천된다. 트랜잭션처리, AOP 등에 대한 처리를 할 수 있다. BeanPostProcessor, BeanFactoryPostProcessor등을 자동으로 등록하고, 국제화 처리, 어플리케이션 이베트 등을 처리할 수 있다.

한숨 요약..

DI 이해가 생각보다 안가서 토비의 스프링, 구글링, 유튜브 등 여러 매체에 검색하다가
위의 유튜브 링크보고 DI를 이해함... 단어가 어려워서 단지 어렵게 느껴졌었던 것 같다;
뭘 종속하고 뭘 의존한다는게 그렇게 어려웠나보다

내가 이해한 DI를 쉽게 풀면 '부품'을 이야기하는 것이고. 위의 DI 방식에는 2가지가 있는데
일반적으로는 객체로 설정하여 부품을 갈아끼우는 등 원하는 것을 지정해준다.
이 때 스프링이 지정해둔 해당 부품을 자동으로 연결을 해주는 작업을 해준다.
그래서 스프링을 사용한다고 ..

결국 돌아가서 생각해보면 스프링 = 객체지향과 관련이 깊고 객체지향적인 프로그래밍을 위해서
작은 부품까지 객체 각 각의 역할을 하는 것으로 이해했다.
(틀렸다면..댓글로 좀 알려주세요;)

profile
#공부중 #협업 #소통중시 #백엔드개발자 #능동적 #워커홀릭 #스파르타코딩 #항해99 #미니튜터 #Nudge #ENTJ #브레인스토밍 #아이디어뱅크

0개의 댓글