본문 바로가기

Spring

스프링 MVC 패턴 어플리케이션 개요


스프링 MVC 는 스트럿츠 등 웹 어플리케이션 프레임워크와 동일하게 Front Controller 패턴을 채용하고 있다. FrontController 패턴이란 핸들러 오브젝트를 매개로 하여 요청을 분배함으로써 요청을 통합하고, 요청에 대해 통일된 처리를 기술할 수 있도록 하기 위한 패턴이다.
스프링에서 브라우저로부터 송신된 요청은 모두 스프링 MVC 에 의해 제공되는 DispatcherServlet 클래스에 의해 관리되고 있다.


웹 브라우저로부터의 Request 는 DispatcherServlet 인스턴스로 보내진다.
Request 를 받은 DispatcherServlet 인스턴스는 어플리케이션 안에서 공통처리를 실행한 다음, 
RequestURL 고유의 처리를 실행하는 Request Controller 를 호출한다.
일반적으로 Request Controller 는 처리 단위별로 개발자가 작성하기 때문에
DispatcherServlet 인스턴스는 지정된 RequestURL 이 어느 Request Controller 에 Mapping 되어 있는지를 알아야 한다. 

그러나 DispatcherServlet 는 어플리케이션에서 하나의 인스턴스일 뿐 Mapping 정보를 관리하는 기능을 갖고 있지 않는다. 
RequestURL 과 Request Controller 의 Mapping 을 관리하고 있는 것은 HandlerMapping 인스턴스다.
DispatcherServlet 인스턴스는 HandlerMapping 인스턴스를 참조하여 HandlerMapping 인스턴스로부터 반환된 Controller 인스턴스로 처리를 전달한다.

처리가 전달되 Controller 인스턴스는 필요한 비즈니스 로직을 호출하여 처리 결과인 Model 과 이동할 View 정보를 DispatcherServlet 에 반환한다.  
이들 정보 (Model and View) 는 스프링 MVC 가 제공하는 ModelAndView 인스턴스로 취급된다. 
그리고 Controller 인스턴스로 반환된 View 는 논리 정보이기 때문에 DispatcherServlet 은 ViewResolver 인스턴스를 통해 확인한다.
DispatcherServlet 는 ViewResolver 인스턴스에 의해 해결된 View 인스턴스에 대해 모델을 렌더링하여 처리 결과를 브라우저에 표시한다.

이상이 MVC 처리의 기본 흐름이다. 


언급된 HandlerMapping, Controller, ViewResolver, View 는 모두 스프링 MVC 가 제공하는 인터페이스이다. 스프링 MVC 에는 인터페이스뿐만 아니라 각각의 인터페이스의 구현 클래스도 포함하고 있다. 
통상 개발에서는 Controller 를 제외한 Handlermapping, ViewResolver, View 인터페이스의 구현 클래스는 스프링 MVC 에서 제공하는 구현 클래스를 활용하면 된다. 

스프링 MVC 는 이들의 구성정보를 DI 컨테이너에서 관리하고 있다. 스프링 설정 파일을 어느 HandlerMapping 의 구현 클래스를 사용할 것인지는 Controller 클래스로부터 호출할 비즈니스 로직을 연관 지음으로써 어플리케이션의 구성을 관리하면 된다.

** 스프링에서는 "메소드" 를 호출할 때 의 Aop   제공  //  AspectJ 는 다양하게 주입 제공 

reference : Spring 2.5 실전 프로그래밍  p350 ~    [삼양]

'Spring' 카테고리의 다른 글

AOP Alliance [ aopalliance.jar ]  (0) 2011.09.12
Spring cglib  (0) 2011.09.12
Spring fw AOP and Paypal soap  (0) 2011.09.04
자바 - Log4j 사용법 ( 설명 자세히 잘 되어 있음 )  (0) 2011.08.26
Java 연습 2008-1 Banking  (0) 2011.08.24