يتمتع SpringMVC بدعم توسع ودود للغاية للمعلمات تصدير ومعلمات ، مما يسهل عليك الحصول على حقوق تنفيذ أكبر لإدخال البيانات والإخراج. كيف يمكننا القيام بسلسلة من المعالجة من خلال النتائج المحددة بواسطة springMVC؟
أدخل الجينسنغ
requestbodyadvice: معالجة جميع المعلمات مع @requestbody
الحالة المرجعية: JSONVIEWREQUESTBODIDADVICE
الطبقة العامة jsonviewRequestbodyAdvice يمتد requestbodyadviceadapter { /*** فيما يلي عملية مسبقة ومتطابقة. في الواقع ، يخبرك أن فقط أولئك الذين يرضون True سوف ينفذون طريقة revebodyRead التالية. هنا يمكنك تحديد اعتراضك المتعلق بالعمل والمطابقة * param methodparameter * param targettype * param converstertype * @return */ ouverride public boolean support (methodarameter methodarerty ، type targettype ، class <؟ (AbstractJackson2httpmessageConverter.class.isAssignableFrom (ConverterType) && methodparameter.getParameterannotation (jsonview.class)! = null) ؛ }. jsonview enrotation = methodParameter.getParameterAnnotation (jsonview.class) ؛ الفئة <؟> [] classes = annotation.value () ؛ if (classes.length! = 1) {رمي new alfictalargumentException ("jSonView مدعوم فقط للحصول على نصيحة الجسم مع الوسيطة من الدرجة الأولى بالضبط:" + methodparameter) ؛ } إرجاع MapPingJackSoninPutMessage (inputMessage.getBody () ، inputmessage.getheaders () ، الفئات [0]) ؛ }}تصدير الجينسنغ
ResponseBododyadvice: معالجة لجميع المعلمات مع ResponseBody
الحالة المرجعية:
controllerAdvicePublic class logresponsebodyadvice تنفذ responseBodyDvice { / ** * * param returntype * param converterType * @return * / Override Public Boolean Supports (MethodParameter returntype ، class ColliterType) {return true ؛ } Override Public Object festbodyWrite (جسم الكائن ، ReturnType ، mediaType SelectionContentType ، class selectConverTerType ، serverHtpRequest request ، serverhtpresponse response) {// هل أي شيء هو الجسم هو كائن النتيجة التي تم إرجاعها ، إرجاع الجسم قبل المعالجة ؛ }}أشياء يجب ملاحظتها
يجب إضافة فئة كائن المعالجة المخصصة باستخدام @ControllerAdvice annotation!
لماذا؟
في الكود initControllerAdviceCache() ، سيتم تنفيذ فئة RequestMappingHandlerAdapter
قائمة <ControlerAdviceBean> Beans = ControlerAdvicebean.FindAnnotatedBeans (getApplicationContext ()) ؛ annotationawareorderComparator.sort (Beans) ؛
ستبحث طريقة ControlerviceBean.FindAnnotatedBeans عن فصول مع توضيحات ControllerAdvice على الفصل وسيتم إضافتها إلى المعالجة.
القائمة الثابتة العامة <ControlerAdvicebean> findAnnotatedBeans (ApplicationContext ApplicationContext) {List <ControlerAdvicebean> Beans = new ArrayList <ControlerDadviceBean> () ؛ لـ (اسم السلسلة: beanfactoryutils.beannamesfortypeIncludeDancEstors (ApplicationContext ، Object.class)) {if (applicationContext.findannotationOnbean (name ، controllerAdvice.Class)! = null) }} إرجاع الفول ؛ }لذلك يمكنك تحديد النتائج الواردة والصادرة للنتيجة وفقًا لاحتياجاتك والقيام ببعض المعاملة الخاصة ...
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.