※ spring 흐름에 대해 간단 요약



먼저, 클라이언트가 요청 시~작!


1. DispatcherServlet 으로 요청이 들어오면,

   HandlerMapping 을 이용해서(bean설정파일 xml에 정의되어 있음) 요청한 URL에 해당하는 컨트롤러 찾는다.


   URL 기반으로 컨트롤러가 정해져 있으므로..


   ex) http://www.abc.com/test/test.do 등으로 접근


2. 컨트롤러를 얻으면 DispatcherServlet이 요청에 대한 모든 작업을 컨트롤러에게 넘긴다.


   ex) web.xml에서 servlet, servlet-mapping 내용을 보고 %servlet_name%-servlet.xml 읽어들임

        handlerMapping 에서 컨트롤러 가져옴


3. 컨트롤러에서 비즈니스로직 등을 모두 처리하고 생성된 모델데이터/뷰의 정보를 DispatcherServlet에 반환한다.

   ModelAndView 클래스에 담아서 반환처리.


4. DispatcherServlet에 전달된 ModelAndView 클래스의 view 정보는 

   view객체 or view이름을 가진다.


  - 컨트롤러에서 view객체를 통해서 반환되면, DispatcherServlet은 view객체를 이용해서 클라이언트 화면에 출력

  - 컨트롤러에서 view이름을 통해서 반환되면, bean설정파일에 정의된 ViewResolver 클래스를 이용해서 

    클라이언트에게 출력할 view객체를 얻는다.



참고하기> 

http://blog.daum.net/dooly_zone/7759925

http://darkhorizon.tistory.com/entry/%ED%8E%80%EA%B8%80-Spring-Framework%EC%9D%98-%EA%B5%AC%EC%A1%B0%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C

http://www.ezslookingaround.com/blog/tech/?no=1763


http://teamblog.rpnetworks.co.kr/?tag=/Spring-Framework

'▶ Java > spring' 카테고리의 다른 글

어노테이션 컨트롤러 설정  (0) 2012.04.10

출처: http://blog.naver.com/sleep_later/40129045979



어노테이션 리퀘스트매핑을 담당할 클래스 bean 등록.


<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> 

<property name="alwaysUseFullPath" value="true" />

</bean>


위의 클래스만 등록해주어도 컨트롤러 단에서 @Controller 와  @RequestMapping 의 어노테이션 컨트롤러 매핑이 가능하지만. 사용자정의 컨트롤러를 bean으로 등록하는 것은 피할수가 없다. 어차피 컨트롤러가 늘어날 때마다 xml에 bean을 등록해야 한다면 어노테이션 매핑이 의미가 없어진다.



그러므로 xml 상단 네임 스페이스에 다음의 참조를 추가.


http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-2.5.xsd


추가된 context 스키마로 인해 다음을 명시할 수 있다.

<context:component-scan base-package="*" />


이로써 모든 패키지에 bean 등록 없이 어노테이션 만으로 리퀘스트를 매핑하는 것이 가능해진다.

base-package에 자바의 물리 패키지를 명시하면 특정 패키지에만 해당하여 bean 등록없이 리퀘스트를 매핑하는 것이 가능하다. 하지만 그것이 언제 필요할런지는 잘 모르겠다.

'▶ Java > spring' 카테고리의 다른 글

spring 흐름 이해  (0) 2012.04.13

+ Recent posts