본문 바로가기

C#

DI(Dependency Injection, 의존성 주입)

728x90

1. Dependency(의존관계)
- A가 B를 의존한다. => 의존대상 B가 변하면, 그것이 A에 영향을 미친다.
  => 즉, B의 기능이 추가 또는 변경되거나 형식이 바뀌면 그 영향이 A에 미친다.
- 다양한 클래스가 특정 클래스에 의존하려면, 특정 클래스는 다양한 클래스가 의존 받을 수 있게 인터페이스로 추상화 해야 한다.
  => 의존 관계를 인터페이스로 추상화하게 되면, 더 다양한 의존 관계를 맺을 수가 있고, 실제 구현 클래스와의 관계가 느슨해지고, 결합도가 낮아진다.

2. Injection(주입)
- 내부가 아니라 외부에서 객체를 생성해서 넣어주는 것

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

4. DI 장점
- 의존성이 줄어든다.
- 재사용성이 높은 코드가 된다.
- 테스트하기 좋은 코드가 된다.
- 가독성이 높아진다.

5. DI 구현 방법
- DI는 의존 관계를 외부에서 결정하는 것이기 때문에, 클래스 변수를 결정하는 방법들이 곧 DI를 구현하는 방법이다. 런타임 시점의 의존관계를 외부에서 주입하여 DI 구현이 완성된다. => 생성자를 이용하거나 메소드를 이용(대표적으로 Setter 메소드)

[출처]
https://nowonbun.tistory.com/643 - ASP.NET의 MVC Framework에서 DI 의존성 주입하는 방법
https://tecoble.techcourse.co.kr/post/2021-04-27-dependency-injection/
https://medium.com/@jang.wangsu/di-dependency-injection-%EC%9D%B4%EB%9E%80-1b12fdefec4f

728x90

'C#' 카테고리의 다른 글

.NET에서 종속성 주입  (1) 2023.01.26
DI(의존성 주입) 사용하는 이유  (0) 2023.01.25
TableLayout에서 Label Ellipsis 사용하기  (0) 2023.01.25
[암호화] 용어 정리  (0) 2023.01.23
Command Line Argument  (0) 2023.01.23