ASP.NET2009.04.15 18:07
당연히 잘 되겠지 라는 생각을 하며, 이 글을 쓰려고 자료 찾고 시행착오 겪고 한게 벌써 8시간 째다.
자료가 이렇게도 없다니 ㅠㅠ, 아마 ASP.NET MVC 에 SPRING.NET 의 Facade 패턴의 DI 를 직접 구현 한 첫번째 글이 될것 같다. ㅡㅡ; 약간 비슷한 자료는 많이 찾았는데, 구현 하고자 하는 자료가 없어서 엄청 애 먹었다.

이전 강좌에서 참조 추가를 했는데, 몇개가 빠져 다시 확실하게 추가 하고 넘어가자.
참조 추가 하는 방법은 아니깐 참조된 파일만 나열하자면... 우선 일반적으로 SPRING.NET 을 설치 하였다면 참조할 경로는 C:\Program Files\Spring.NET 1.2.0\bin\net\2.0\release 이다. 여기서,

antlr.runtime.dll
Common.Logging.dll
Spring.Aop.dll
Spring.Core.dll
Spring.Web.dll

이렇게 다섯개를 참조 하면된다. antlr.runtime 은 아직 잘 모르겠고, 하다보면 뭐 하는 녀석인지 알게 되겠지.. ㅡㅡ; 참고로 www.antlr.org 에 가면 자세한 설명이 있다.

Common.Logging 은 원래 스프링이 자바버전에는 미니 Log4j 를 가지고 있다. 마찬가지로, 스프링 프레임웍으로 개발을 할때 스프링 자체적으로 뱉어내는 로그 들을 확인해 보기 위해 추가 한다. 안해도 상관없지만, 자동으로 콘솔창에 로그가 찍히는걸 보고 싶으면 추가!!

이렇게 추가 했으면, 처음으로 해야 할 것이 web.config 를 수정해야 하는 일이다.


... 이라고 된 부분은 프로젝트 생성할때 만들어 지는 코드 이므로, 해당 섹션에 맞게 위 코드를 추가 하면 된다.

그리고 web.config 와 같은 위치에 objects.xml 이라는 파일을 하나 생성 하고 코드는 아래와 같이 넣는다.


폴더 구조가 아래 그림과 같도록 Service 폴더를 하나 추가 한다. 추가 후에 SpringBoardFacade.vb 라는 인터페이스와 SpringBoardImpl.vb 클래스, SpringControllerFactory.vb 클래스를 만든다.

SpringBoardFacade.vb 는 아래와 같다.


SpringBoardImpl.vb 는 아래와 같다.


SpringControllerFactory.vb 는 아래와 같다.


그리고, Global.asax 의 Application_Start() 메서드에 다음과 같이 한줄을 추가 하도록 한다.

위 세 코드를 설명하자면, 우선 SpringBoardFacade 인터페이스는 SpringBoardImpl 클래스의 인터페이스 이다. SpringBoardImpl 클래스는 Facade 패턴에 쓰일 가장 중요한 클래스 이고, iBATIS.NET 과 연동할때 중심이 될 클래스 이다.
코드에 그냥 Test() 라는 메서드 하나를 둔게, ASP.NET MVC 에서 라우팅을 통해 컨트롤러로 갔을때 제대로 DI 가 되는지 테스트 해 보기 위해서 넣은 코드이다. 실제 게시판 코딩할때는 삭제 될 메서드 이다.

마지막으로 SpringContrllerFactory 클래스는 Global.asax 에서 어플리케이션 스타트 할때 objects.xml 을 미리 로드 하기 위한 System.Web.Mvc.IControllerFactory 구현부 이다.

그럼 마지막으로, HomeController.vb 를 다음과 같이 수정한다.

SPRING Framework 이나 오픈소스 프레임웍의 가장 단점이 세팅하기가 정말 어렵다는 점인데, 역시나 오늘 하루 출근해서 계속 요것만 한것 같다. ㅠㅠ

이렇게 코딩을 하고, 세팅한 이유는 위 HomeController 클래스의 19번째줄 Debug.Pring(sbFacade.Test()) 요게 제대로 나오는지 테스트 한 것이였다. ㅡ..ㅡ;
 
ASP.NET MVC 위에서 MVC 흐름을 자연스럽게 타면서, SPRING.NET 의 Core 부분의 DI를 구현 해 본것이다.

실행후 직접 실행창에 다음과 같은 로그가 찍히면 성공!!


사실 여기 까지의 셋팅이 자바에서도 마찬가지로 굉장히 힘들었던 부분이다.

다음 포스팅에서는 iBATIS.NET 을 붙이는 작업을 하도록 해야겠다.
저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by dotnetpower

티스토리 툴바