Bei der Verwendung von Spring hatte ich oft große Probleme, wenn ich den Verarbeitungsablauf bis zu einem gewissen Grad nicht verstand. Daher werde ich den Inhalt des Lesens der Quelle als mein eigenes Memo zusammenfassen.
DispatcherServlet Alle Anfragen führen die Verarbeitung dieses Servlets durch. Um den Ablauf der Verarbeitung zu verfolgen, sollten Sie sich die Quelle der doService-Methode ansehen.
Damit dieses Servlet die nachfolgende Verarbeitung (Controller usw.) aufruft oder eine Antwort mit JSP usw. generiert. Sie benötigen die folgenden Bohnen.
Der allgemeine Verarbeitungsablauf ist wie folgt.
HandlerMapping Verwenden Sie die Methode getHandle, um die nachfolgende Verarbeitung aus der Anforderung abzurufen und die HandlerExecutionChain zurückzugeben. Die HandlerExecutionChain kann nicht nur den Handler (nachfolgende Controller-Methode), sondern auch mehrere Interceptors enthalten. DispatcherServlet verwendet diese HandlerExecutionChain, um Interceptor und Handler auszuführen.
Die am häufigsten verwendete Klasse zum Implementieren dieser Schnittstelle ist die RequestMappingHanlderMapping-Klasse.
Diese Klasse verbindet Anforderungen und Prozesse basierend auf dem Inhalt von @ RequestMapping
der Controller-Klasse.
HandlerAdapter Adatpter-Klasse zum Ausführen des von HandlerMapping erhaltenen Handlers. Verarbeitet gut vor und nach der Handlerausführung. (Grob)
Eine Klasse, die häufig zum Implementieren dieser Schnittstelle verwendet wird, ist die RequestMappingHandlerAdapter-Klasse. Es speichert Anforderungsparameter in einem Objekt, validiert es und generiert eine ModelAndView aus dem Rückgabewert eines Handlers. (Genau genommen wird die Verarbeitung an HandlerMethodArgumentResolver und HandlerMethodReturnValueHandler delegiert.)
HandlerExceptionResolver Wenn eine Ausnahme auftritt, wird die Ausnahme mit der nachfolgenden Verarbeitung verbunden.
Eine Klasse, die häufig zum Implementieren dieser Schnittstelle verwendet wird, ist die ExceptionHandlerExceptionResolver-Klasse.
Methoden mit @ ExceptionHandler
in Contoller oder ControllerAdvice werden von dieser Klasse ausgeführt.
Übrigens, wie Sie anhand des Inhalts sehen können, hat die Controller-Seite Priorität, wenn der Controller und das ControllerAdvice über "@ ExceptionHandler" verfügen, der dieselbe Ausnahme behandelt.
ViewResolver Sie können die View-Klasse von ViewName abrufen.
Eine Klasse, die häufig zum Implementieren dieser Schnittstelle verwendet wird, ist die InternalResourceViewResolver-Klasse. Diese Klasse kann JstlView zum Zeichnen von JSP aus ViewName abrufen. Wenn der ViewName das Präfix "redirect:" hat, wird eine RedirectView für die Weiterleitungsverarbeitung generiert.
LocaleResolver Es scheint, dass Sie das Gebietsschema aus der Anfrage erhalten können. Ich habe es noch nicht verwendet, daher kenne ich die Details nicht. Wenn Sie jedoch SessionLocaleResolver verwenden, können Sie Gebietsschemainformationen in Sitzung speichern, sodass Sie das Gebietsschema anscheinend für jeden Benutzer verwalten können.
ThemeResolver Es scheint, dass Sie Theme von der Anfrage erhalten können. Ich habe Spring's Theme überhaupt nicht verwendet, daher kenne ich die Details nicht. ..
MultipartResolver Eine Schnittstelle zum Generieren einer mehrteiligen Datei aus einer mehrteiligen / Formulardatenanforderung. Wenn Sie Funktionen wie das Hochladen von Dateien benötigen, müssen Sie diesen Resolver als Bean definieren.
FlashMapManager Eine Schnittstelle zum Verwalten von FlashScope. FlashScope ist ein Bereich zum Speichern von Werten bis zum Umleitungsziel. Normalerweise wird SessionFlashMapManager verwendet und FlashScope wird mithilfe von Session realisiert. Ich habe hier über den Mechanismus geschrieben, also beziehen Sie sich bitte darauf, wenn Sie möchten. Übergeben Sie den Wert an das Umleitungsziel, ohne Umleitungsattribute in Spring MVC zu verwenden
Recommended Posts