في عملية بناء خدمات البيانات المريحة ، حددنا وحدات التحكم والمستودعات وقمنا بتعديلها مع بعض التعليقات التوضيحية ، لكننا لم نقم حتى الآن بإجراء تحويل الكائنات - تحويل كائنات Java Entity إلى تدفقات إخراج بيانات HTTP. تستخدم الطبقة الأساسية لـ Spring Boot HTTPMESSAGECONVERTS لإخراج فئات كيان JAVA في تنسيق JSON من خلال الاعتماد على مكتبة جاكسون. عند توفر محولات متعددة ، حدد المحول الأنسب لاستخدامه وفقًا لنوع كائن الرسالة ونوع المحتوى المطلوب.
في المقالة httpmessageconverter ، تحليل رمز مصدر springMVC ، هناك مخطط يشير بوضوح إلى موقع محول الرسائل.
موقع محول الرسائل
الهدف من محول الرسائل هو: تحويل تنسيق طلب إدخال HTTP إلى كائنات Java ؛ تحويل كائنات Java إلى طلبات الإخراج HTTP. تدعم بعض محولات الرسائل فقط أنواع بيانات متعددة ، وبعضها يدعم تنسيقات الإخراج المتعددة ، والبعض الآخر يوفر كلاهما. على سبيل المثال: يمكن لـ MapPingJackson2httpMessageConverter تحويل كائنات Java إلى التطبيق/JSON ، في حين أن protobufhttpmessageconverter يدعم فقط مدخلات com.google.protobuf.message ، ولكن يمكن إخراج التطبيق/json ، application/xml ، النص/application/x-protobuf.
كيف
هناك ثلاث طرق لتكوين محول الرسائل في المشروع ، والفرق الرئيسي هو قياس التخصيص وسهولة الاستخدام.
إضافة تعريف bean إلى فئة التكوين webcond
beanpublic bytearrayhttpmessageconverter bytearrayhttpmessageconverter () {return new bytearrayhttpmessageconverter () ؛} تجاوز طريقة configuremessageConverters لتوسيع القائمة المرتبطة بمحول الرسائل الموجود ؛
Overridepublic void configuremessageConverters (قائمة <httpmessageConverter <؟ >> المحولات) {converters.add (bytearrayhttpmessageConverter ()) ؛} لمزيد من التحكم ، يمكنك إعادة كتابة طريقة ExtendMessageConverters ، أولاً قم بمسح قائمة المحول ، ثم إضافة محول مخصص.
Overridepublic void ExtendMessageConverters (قائمة <httpmessageConverter <؟ >> المحولات) {converters.clear () ؛ المحولات.تحليل
يوفر Spring طرقًا متعددة لإنجاز نفس المهمة ، والتي يتم اختيارها تعتمد على ما إذا كنا نركز أكثر على الراحة أو التخصيص.
ما هي الاختلافات بين الطرق الثلاثة المذكورة أعلاه؟
يعد تحديد httpmessageConverter عبر bean أسهل طريقة لإضافة محول الرسائل إلى مشروعك ، على غرار الإضافة المذكورة أعلاه لمرشحات servlet. إذا قام الربيع بالمسح إلى حبة من نوع httpmessageconverter ، فسيتم إضافتها تلقائيًا إلى سلسلة المكالمات. يوصى براث تكوين الويب في المشروع من WebMVCConfigurerAdapter.
من المريح إضافة محول مخصص عن طريق إعادة كتابة طريقة configuremessageConverters ، ولكن هناك ضعف: إذا كانت هناك حالات متعددة من أجهزة WebMVCConfigurers في المشروع (والتي نحددها أنفسنا أو المقدمة عن طريق التمهيد الربيعي افتراضيًا) ، فمن غير الضمان أن يتم إعادة تكوين طريقة إعادة تكوينه في طلب ثابت.
إذا كانت هناك حاجة إلى مزيد من التحكم الحبيبي: تطهير محولات الرسائل الأخرى أو محولات مكررة بوضوح ، فيمكن القيام به من خلال إعادة كتابة ExtendMessageConverters ، وما زالت هناك هذا الاحتمال: يمكن لحالات WebMVCConfigurer أيضًا إعادة كتابة هذه الطريقة ، ولكن الفرصة صغيرة جدًا.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.