Spring MVC九大コンポーネント概要

2346 ワード

前言
Displatch Servlet初期化の過程で、Spring MVCは九つのコンポーネントを初期化することを知っています.ここではこの九つのコンポーネントがそれぞれどのような役割を果たしているかを見てみます.
HandlerMapping
私たちはHandlerMappingインターフェースの中でただ一つの方法だけを定義していることを見ることができます.つまりrequestを通じてHandlerExecution Charinを見つけました.一方、HandlerExecution CharinはHandlerとInterceptorsのセットを包装しました.
public interface HandlerMapping {

    HandlerExecutionChain getHandler(HttpServletRequest request) throws Exception;

}
HandlerAdapter
なぜHandlerAdapterが必要なのかというと、Spring MVCはHandlerに対して何の規定もしていないので、クラスでもいいです.方法でもいいし、他のものでもいいです.HandlerのタイプはObjectで、とても柔軟です.しかし、どのように任意の種類のHandlerに固定フォーマットの要求を処理させますか?そうです.アダプターを使うと、各Handlerに対応するHandlerAdapterが必要です.私達はHandlerAdapterインターフェースの定義を見にきました.
public interface HandlerAdapter {

    /**
     *          handler
     */
    boolean supports(Object handler);

    /**
     *      handler    
     */
    ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception;

    /**
     *         ,    -1     
     */
    long getLastModified(HttpServletRequest request, Object handler);

}
Handler Exception Resolaver
要求を処理する過程で、異常が発生するのは避けられません.HandlerExceptionResoloverは特別に異常を処理するコンポーネントです.それは異常によってModelAndViewを設定し、その後レンダーにレンダリングします.私達はHandler Exception Resoloverのインターフェースの定義を見にきました.
public interface HandlerExceptionResolver {

    ModelAndView resolveException(
            HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex);

}
上記の分析からは、HandlerException Resolaverはページレンダリング前の異常を処理するしかないことが分かります.ページレンダリング中の異常は処理できません.この時、容器を指定されたエラーページにジャンプさせて異常を処理します.
View Resolaver
View ResoloverはStringタイプのビュー名とローカライズ情報LocalをViewタイプのビューに解析します.そのインターフェースは以下の通り定義されています.
public interface ViewResolver {

    View resolveViewName(String viewName, Locale locale) throws Exception;

}
Request ToView NameTranslator
View Resoloverはview NameによってViewを検索しますが、あるHandlerは処理が終わった後、Viewもview Nameも設置されていません.この時はRequest ToView NameTranslatorがrequestからデフォルトのViewを見つけます.Request ToView NameTranslatorのインターフェース定義を見てみます.
public interface RequestToViewNameTranslator {

    String getViewName(HttpServletRequest request) throws Exception;

}
Local Resolaver
The meResolaver
MultiiprtResolaver
Flash MapManager