SpringMVC verfügt über eine sehr freundliche Unterstützung für die Export und Parameter von Parametern, wodurch Sie mehr Ausführungsrechte für Dateneingaben und Ausgaben haben. Wie können wir eine Reihe von Verarbeitung durch die von SpringMVC definierten Ergebnisse durchführen?
Geben Sie den Ginseng ein
RequestBodyAdvice: Verarbeitung für alle Parameter mit @RequestBody
Referenzfall: JsonViewRequestBodyAdvice
Public Class JsonViewRequestBodyAdvice erweitert RequestBodyAdviceAdapter { /*** Hier ist ein vorzehnte und passender Operation. Tatsächlich sagt es Ihnen, dass nur diejenigen, die True befriedigen, die folgende VorbodyRead -Methode ausführen werden. Hier können Sie Ihr eigenes geschäftsbezogenes Interception and Matching definieren * @param methodParameter * @param targetType * @param konvertertype * @return */ @Override public boolean Supports (methodParameter methodParameter, tiagetype, class <? ) } // Hier ist die spezifische Vorerweiterung ... Das folgende Beispiel besteht darin, herauszufinden, ob diese Parametereintragsmethode @JsonView-Modifikation @Override public httpinputMessage vorbodyread hat (httpinputMessage InputMessage, methodParameter methodparameter, ausgewählt. {Jsonview Annotation = methodParameter.getParameterAnnotation (jsonView.class); Class <?> [] Classes = Annotation.Value (); if (classes.length! = 1) {werfen Sie neue illegalArgumentException ("@jsonView nur für Anforderungskörperberatung mit genau 1 Klassenargument:" + MethodParameter); } return New mapingjacksonInputMessage (InputMessage.getBody (), InputMessage.Getheaders (), Klassen [0]); }}Exportieren Sie Ginseng
ResponseBodyAdvice: Verarbeitung für alle Parameter mit @ResponseBody
Referenzfall:
@ControllerAdvicePublic Class LOGRePonseBodyAdvice Implements ResponseBodyAdvice { / ** * * @param returnType * @param Convertertype * @return * / @Override public boolean unterstützt (methodarameter returntype, class konverterType) {return true; } @Override Public Object vorbodywrite (Objektkörper, MethodParameter ReturnType, MediaType SelectedContentType, Klasse SelectedConverterType, ServerhttpRequest Request, ServerhtttPesponde -Antwort) {// irgendetwas band ist das zurückgegebene Ergebnis -Objekt, zurückgegebene Body vor der Verarbeitung. }}Dinge zu beachten
Die benutzerdefinierte Verarbeitungsobjektklasse muss mit @ControllerAdvice -Annotation hinzugefügt werden!
Warum?
Im initControllerAdviceCache() wird die RequestMappingHandlerAdapter -Klasse a ausführen
Liste <ControllerAdviceBean> beans = ControllerAdvicebean.FindannotatedBeans (getApplicationContext ());
Die Methode ControllerAdviceBean.FindannotatedBeans sucht nach Klassen mit ControllerAdvice -Annotationen in der Klasse und wird der Verarbeitung hinzugefügt.
öffentliche statische Liste <ControllerAdvicebean> FindAnnotatedBeans (ApplicationContext ApplicationContext) {Liste <ControllerAdvicebean> beans = new ArrayList <ControllerAdvicebean> (); für (String -Name: beanfactoryUtils.BeannamesForTypeinCludedancestors (ApplicationContext, Object.class)) {if (applicationContext.findannotationonbean (Name, ControllerAdvice.class)! }} Rückkehr Bohnen; }Sie können also die eingehenden und ausgehenden Ergebnisse des Ergebnisses entsprechend Ihren Bedürfnissen definieren und eine besondere Behandlung durchführen ...
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.