ما هو o/xmapper؟
ميزة جديدة من Spring 3.0 هي O/Xmapper. مفهوم O/X Mapper ليس جديدًا. O يمثل الكائن و X يمثل XML. والغرض منه هو التحويل ذهابًا وإيابًا بين كائنات Java (دائمًا ما يكون PlainoldjavaObject ، أو اختصاره كمستندات POJO) و XML.
على سبيل المثال ، قد يكون لديك حبة بسيطة مع عدة سمات ، ويحتاج عملك إلى تحويل كائن Java إلى مستند XML. يمكن لـ SPRING'S O/XMAPPER حل هذه المشكلة لك. إذا كنت بحاجة بدورها إلى تحويل مستند XML إلى Javabean بسيط ، فإن SPRING'S O/XMAPPER مؤهلة أيضًا.
شيء واحد يجب ملاحظة: Springo/Xmapper هو مجرد واجهة موحدة تنفذها أطر العمل الثالث الشهير. للاستفادة من وظائف SPRING O/X ، تحتاج إلى أداة تحول ذهابًا وإيابًا بين كائنات Java و XML. Castor هي أداة شائعة من الطرف الثالث ، وستستخدم هذه المقالة هذه الأداة. وتشمل هذه الأدوات الأخرى XMLBeans و Java Architecture لـ XMLBinding (JAXB) و JIBX و Xstream.
التنقل والاتحاد
عند القيام برسم الخرائط O/X ، فغالبًا ما ترى المصطلحات التي تنقلها.
يشير Markalling إلى عملية تحويل Javabean إلى وثيقة XML ، مما يعني أنه سيتم ملء جميع الحقول وقيم الحقل من Javabean إلى ملف XML كعناصر أو سمات XML. في بعض الأحيان ، يسمى التنميقة أيضا التسلسل.
كما قد تتوقع ، فإن unmarshalling هو العملية المعاكسة تمامًا للحشد ، وهي تحويل مستند XML إلى جافابان ، مما يعني أن جميع العناصر أو سمات وثيقة XML يتم ملؤها إلى جافابان كحقول Java. في بعض الأحيان ، يطلق على unmarshalling أيضا إزالة التخلص.
فوائد استخدام الربيع O/XMapper
واحدة من أكثر الفوائد المباشرة لاستخدام O/Xmapper في Spring هي أنه يمكن تبسيط التكوين عن طريق الاستفادة من الميزات الأخرى لإطار الربيع. تدعم مكتبة Bean's Bean استخدام الكائنات التي تستخدم حقن Marshaller التي تم تأسيسها (أي "حقن التبعية" المذكورة سابقًا). نكرر أن هذا سيؤدي إلى تسريع تطوير التطبيقات ونشرها.
بعد ممارسات التصميم الموجه نحو الكائنات الصلبة ، يحدد Framework Springo/X فقط واجهتين: Marshaller و Unmarshaller ، والتي يتم استخدامها لأداء وظائف O/X ، وهي فائدة مهمة أخرى لاستخدام هذا الإطار. إن تنفيذ هذه الواجهات مفتوح تمامًا للمطورين المستقلين ، ويمكن للمطورين تبديلها بسهولة دون تعديل الكود. على سبيل المثال ، إذا بدأت مع Castor لتحويل O/X ، ولكن بعد ذلك تجد أنه يفتقر إلى بعض الوظائف التي تحتاجها ، في هذه المرحلة يمكنك التبديل إلى Xmlbeans دون أي تغييرات رمز. الشيء الوحيد الذي عليك القيام به هو تغيير ملف تكوين الربيع لاستخدام إطار O/X الجديد.
فائدة أخرى لاستخدام SPRING O/XMAPPER هي التسلسل الهرمي للاستثناء الموحد. يتبع إطار عمل الربيع النمط الذي تم تحديده باستخدام وحدة الوصول إلى البيانات الخاصة به عن طريق لف كود الاستثناء الأصلي في استثناء وقت التشغيل الذي تم إنشاؤه بواسطة Spring نفسه لـ O/XMapper. نظرًا لأن الاستثناء الأصلي الذي تم إلقاؤه بواسطة موفر طرف ثالث يتم لفه في استثناء وقت تشغيل الربيع ، يمكنك معرفة السبب الجذري للاستثناء. ليس عليك أن تهتم بتعديل الكود لالتقاط الاستثناء ، حيث يتم لف الاستثناء في استثناء وقت التشغيل. تمديد استثناءات وقت التشغيل التالية الاستثناء الأساسي XMLMappingException: GenerCmarshallingFailureException ، و ValidentFailureException ، و MarshallingFailureException ، و UnmarshallingFailureException.
البدء مع سيدي
قائمة التكوين:
ApplicationContext.xmlspring ملف التكوين
<beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" XSI: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/schema/beans/spring-beans-3.0.xsd"> <soxmdemo <property name = "unmarshaller" ref = "castormarshaller"/> </bean> <!-تقديم حزمة الخروع: castor-1.3.2-core.jar ، castor-1.3.2-xml.jar-> <bean id = "castormarshaller">
عند التنقل والرقص ، يجب استخدام تنسيق التعيين المطبق للنجاح عند عدم التجميع (هناك سؤال هنا. لا أعرف ما إذا كان لا يمكن تنسيقه إلا من خلال التعيين إلى مجموعة غير مجمعة بسبب مشكلة الكتابة الخاصة بي ، وإلا فإن الخطأ الذي لا يمكن العثور عليه في الجذر).
ملف mapping.xml
<تعيين> <class name = "com.mdf.springoxm.customer"> <map-to xml = "customer"/> <field name = "flag" type = "boolean"> <bind-xml name = "flag" node = "element"/> </field> <field name = "type =" string "> name = "sex" type = "string"> <bind-xml name = "sex" node = "element"/> </field> </class> </sapping>
تخصيص ملفات الفول
customer.java
حزمة com.mdf.springoxm ؛ عميل الفئة العامة {اسم السلسلة الخاصة ؛ سلسلة جنسية خاصة ؛ علم منطقي خاص ؛ السلسلة العامة getName () {return name ؛ flag ؛} public void setFlag (follean flag) {this.flag = flag ؛}}xmldemo.java ملف
package com.mdf.springoxm ؛ import java.io.fileinputStream ؛ استيراد java.io.fileOutputStream ؛ استيراد java.io.ioException ؛ استيراد javax.xml.transform.stream.streamresult ؛ org.springframework.oxm.unmarshaller ؛ public class oxmdemo {private Marshaller Marshaller ؛ private unmarshaller unmarshaller ؛ public Marshaller getMarshaller () unmarshaller ؛} public void setunmarshaller (unmarshaller unmarshaller) {this.unmarshaller = unmarshaller ؛} public void convertFromObjectToxml (كائن كائن ، سلسلة filepath) rewrows ioException {fileOutputStream os = null ؛ StreamResult (OS)) ؛} أخيرًا {if (os! = null) {os.close () ؛}}} الكائن العام convertFromxMlToObject (سلسلة xmlfile) يلقي iOexception {fileInputStream is = null ؛ try {iS = new FileInputStream (xmlfile) ؛ أخيرًا {if (is! = null) {is.close () ؛}}}}امتحان
استيراد org.springframework.context.applicationContext ؛ استيراد org.springframework.context.support.classpathxmlapplicationContext xml_file_name = "customer.xml" ؛ public static void main (string [] args) remrows ioException {ApplicationContext AppContext = new ClassPathxMlapplicationContext ("ApplicationContext.xml") ؛ OxmDemo Converter = (OxmDemo) ApplicTex customer () ؛ customer.setName ("yiibai") ؛ customer.setFlag (true) ؛ customer.setsex ("haikou haidiandao") ؛ system.out.println ("تحويل الكائن إلى xml!") ؛ // من كائن إلى ملف xml. /n syonment) ؛ system.out.println("convert xml العودة إلى الكائن!نتائج الاختبار:
11 مايو ، 2016 2:27:52 مساءً org.springframework.context.support.classpathxmlablectionContext المعلومات: تحديث org.springframework.context. جذر التسلسل الهرمي للسياق 11 مايو ، 2016 2:27:52 مساءً org.springframework.beans.factory.xml.xmlbeandefinitionReader loadbeandefinitions المعلومات: تحميل تعريفات الحبة XML من موارد مسار الفصل [ApplicationContext.xml] org.springframework.oxm.castor.castormarshaller معلومات بعد بروبتيست المعلومات: تم تكوينها باستخدام [مورد مسار الفئة [mapping.xml]] تحويل الكائن إلى XML! تم تحويل XML مرة أخرى إلى الكائن! com.mdf.springoxm.customer@b419da القيام به
لخص
ما سبق هو كل شيء عن مثال إدخال OXM الربيع في هذه المقالة ، وآمل أن يكون مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!