기초 메모지

ASP.Net Core - 종속성 주입(DI : Dependency Injection) 본문

Frameworks, Platforms/ASP.Net Core

ASP.Net Core - 종속성 주입(DI : Dependency Injection)

라큐브 2022. 9. 19. 11:58

종속성?

종속성이란 특정 타입에 의존한다는 뜻입니다.
즉, 특정 타입(클래스)이외에는 형변환을 할 수 없어 명시적으로 타입(클래스)을 지정해야한다는 뜻입니다.

 

종속성이 문제가 되는 이유

1. 재사용이 불가능해 동일한 코드를 타입 별로 만들어야합니다.

2. 코드가 많아지면서 유지보수가 어려워집니다.

종속성 주입을 통해 느슨한 코드를 만들자!

종속성 문제를 해결하기 위한 대안으로 종속성 주입(Dependency Injection)이 도입되었습니다.

종속성 주입은 상위 타입인터페이스로 하위 타입클래스를 생성하는 캡슐화를 이용합니다. 
이 작업을 ASP.NET Core 프레임워크가 자동으로 넣어주는 게 종속성 주입입니다.

어떻게 구성하지?

1. 상위 타입이 될 인터페이스를 생성합니다.

public interface ICar
{
    public List<string> CarModels();
}

2. 하위 타입이 될 클래스를 생성합니다.

public class KiaMotors : ICar
{
    public List<string> CarModels()
    {
    	return new List<string>()
        {
            "K3",
            "K5",
            "K9"
        }
    }
}

3. Program.cs에서 종속성 주입 설정을합니다.

builder.Services.AddTransient<ICar, KiaMotors>();

4. 타입을 주입할 클래스에서 인터페이스 타입을 매개 변수로 받는 생성자를 생성합니다.

public class KiaCar
{
    private readonly ICar _Car;
	// ASP.NET Core에서 KiaMotors 클래스 타입으로 넣어(종속성 주입)줍니다.
    public KiaCar(ICar Car)
    {
        Car = _Car;
    }
    
    public List<string> CarModels()
    {
    	// 인터페이스 타입으로 KiaMotors 클래스를 재사용합니다.
    	return _Car.GetModels();
    }
}

 

반응형
Comments