[ASP.NET MVC]Ninject 사용법

Posted by 알 수 없는 사용자
2015. 8. 23. 21:40 프로그래밍/.NET

이전 글에서 Dependency Injection에 대해 소개했는데 이번에는 ASP.NET MVC에 적용할 수 있는 컨테이너인 Ninject를 알아보자.

어플리케이션에서 인터페이스를 사용하고 의존성을 주입하여 각 구성요소들 간에 의존성을 분리해보도록 하자.


1. 프로젝트에 Ninject 추가하기


[그림 1]

프로젝트에 Ninject를 사용하기 위해서는 NuGet패키지 관리를 이용한다. 

프로젝트에서 마우스 우클릭 -> NuGet 패키지 관리를 선택 후 오른쪽 상단 검색창에서 ninject를 검색하면 [그림 1]과 같은 화면이 나오고 설치를 누른다.

설치 후 프로젝트의 참조를 보면 ninject가 추가된 것을 볼 수 있다.

 

[코드 1]

코드에서 Ninject를 사용하기 위해서는 먼저 Ninject 커널을 생성해야 한다. 이후에 인터페이스를 사용하려는 클래스와 바인드하는 작업을 한다.

[코드 1]의 3번째 줄은 커널을 생성한 부분이고, 5번째 줄은 IShoesFactory인터페이스를 NShoes와 바인딩시키는 부분이다.


[코드 2]

바인딩한 클래스를 전달하기 위해서는 [코드 2]의 7줄과 같이 Get메서드를 사용한다.

추가로 Ninject를 이용해 인터페이스와 클래스간에 바인딩 작업을 통해 여러 의존성 체인형성도 가능하다.


[코드 3]
만약 인터페이스와 클래스를 바인딩 할 때 속성값을 전달 하고 싶을 경우에는 [코드 3]의 5번째 줄과 같이 WithPropertyValue함수를 이용한다.
파라미터로 속성이름과 속성값을 전달 하고 속성값 전달 시 따옴표 안에 속성이름을 적어주면 된다.

위와같이 Ninject를 이용하여 의존성 주입을 하고 그에 따른 관심사의 분리가 가능하다