Korean Developer - Spring MVC Integration

Spring MVC 통합

Grails는 하부 웹 애플리케이션 프래임워크로서 Spring MVC를 활용하고 있습니다. 비록 Spring MVC가 가장 간결한 프래임워크는 아니지만, Spring MVC가 제공하는 확장성은 Grails의 목적에 완벽히 어울립니다. Grails 서블릿은 Grails 환경의 부트스트랩을 위해 Spring의 DispatcherServlet 을 확장하고 있고, 모든 Grails 콘트롤러의 요청을 처리하는 Spring MVC 콘트롤러인 org.codehaus.groovy.grails.web.servlet.mvc.SimpleGrailsController 의 인스턴스가 단 한개만 존재합니다.

SimpleGrailsController 는 요청을 org.codehaus.groovy.grails.web.servlet.mvc.SimpleGrailsControllerHelper 로 전달하는데, 이 클래스가 실제로 요청을 처리합니다. 이 클래스는 HTTP 요청을 몇 단계로 나누어 처리합니다. 진입점은 handleUri 메서드인데, 다음과 같은 작업을 수행합니다:

  1. URI를 그 구성요소(콘트롤러 이름, 액션 이름, ID 등)로 분해
  2. URI에 해당하는 GrailsControllerClass 인스턴스를 새로 생성
  3. 콘트롤러 인스턴스의 동적 메서드 및 속성을 설정
  4. 콘트롤러의 스케폴딩 기능이 활성화되어 있는 경우 스케폴더(scaffolder)를 얻어옴
  5. URI에 대한 클로저 액션의 래퍼런스를 얻어옴
  6. 플래시 스코프를 다음 상태로 전진
  7. URI를 위한 뷰 이름을 얻어옴
  8. 등록된 before 인터셉터를 실행
  9. before 인터셉터가 false를 반환하지 않았으면 콘트롤러 액션에 대한 클로저를 실행
  10. 뷰 이름과 클로저 액션이 반환한 모델을 기반으로 Spring MVC의 ModelAndView 인스턴스를 생성
  11. 등록된 after 인터셉터를 실행
  12. Spring MVC의 ModelAndView 인스턴스를 반환
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.