SpringMVCは、パラメーターのエクスポートとパラメーターに対して非常に友好的な拡張サポートを提供しているため、データ入力と出力の実行権が向上することが容易になります。 SpringMVCによって定義された結果を通じて一連の処理を行うにはどうすればよいですか?
高麗人参を入力します
RequestBodyAdvice:@RequestBodyを使用したすべてのパラメーターの処理
参照ケース:jsonViewRequestBodyAdvice
パブリッククラスjsonViewRequestBodyAdviceは、RequestBodyBodyAdviceAdapter { /***以下を事前に誤って一致させる操作を拡張します。実際、Trueを満たすものだけがBefordbodyBodyReadメソッドを実行することを示しています。ここでは、独自のビジネス関連のインターセプトとマッチング * @param MethodParameter * @param converterType * @return */ @Overrideパブリックブールンサポート(MethodParameter MethodParameter、タイプターゲットタイプ、クラス<? (AbstractJackson2HttpmessageConverter.class.ISASSINABLEFROM(converterType)&& MethodParameter.getParameterAnnotation(jsonView.class)!= null); } //ここに特定の事前操作があります...次の例は、このパラメーターエントリメソッドが@JSONVIEWの変更@Override @Override @Override httpinputmessageを持っているかどうかを調べることです。 jsonview annotation = methodparameter.getParameterAnnotation(jsonview.class); class <?> [] classes = annotation.value(); if(classes.length!= 1){新しいIllegalargumentException( "@jsonViewのみがサポートされています。 } new mappingjacksoninputmessage(inputmessage.getbody()、inputmessage.getheaders()、classes [0]); }}高麗人参を輸出します
ResponseBodyAdvice:@ResponseBodyを使用したすべてのパラメーターの処理
参照ケース:
@controlleradvicepublic class logresponsebodyadviceはresponsebodyadvice { / ** * * @param returntype * @return * / @override public boolean supports(methodparameter returntype、class convertertype){return true; } @Override public object beforebodywrite(オブジェクトボディ、methodparameter returntype、mediatype selectedcontenttype、class selectedconvertertype、serverhttprequest request、serverhttpresponse応答){//何かを返した結果オブジェクト、処理前に戻ります。 }}注意すべきこと
カスタム処理オブジェクトクラスは、@ControllerAdvice Annotationで追加する必要があります!
なぜ?
initControllerAdviceCache()コードでは、 RequestMappingHandlerAdapterクラスが
List <ControllEradViceBean> Beans = ControllEradviceBean.FindannotatedBeans(getApplicationContext()); annotationAwareOrderComparator.sort(beans);
controlleradvicebean.findannotatedBeansメソッドは、クラスにControllerAdviceアノテーションを備えたクラスを探し、処理に追加されます。
public static list <controlleradvicebean> findAnnotatedBeans(applicationContext ApplicationContext){list <ControllerAdviceBean> Beans = new ArrayList <ControllEradViceBean>(); for(string name:beanfactututils.beannamesputypeincludedanceStors(applicationContext、object.class)){if(applicationContext.findannotationOnbean(name、controlleradvice.class)!= null){beans.add(new ControllerAdvicebean(name applicationContext); }} beansを返します。 }そのため、あなたのニーズに応じて結果の着信パラメーターと発信パラメーターを定義し、特別な治療を行うことができます...
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。