Apa itu o/xmapper?
Fitur baru Spring 3.0 adalah O/XMapper. Konsep O/X Mapper bukanlah hal baru. O mewakili objek dan x mewakili xml. Tujuannya adalah untuk mengonversi bolak -balik antara benda -benda Java (hampir selalu menjadi poleoldjavaObject, atau disingkat sebagai pojo) dan dokumen XML.
Misalnya, Anda mungkin memiliki kacang sederhana dengan beberapa atribut, dan bisnis Anda perlu mengubah objek Java itu menjadi dokumen XML. O/XMapper Spring dapat menyelesaikan masalah itu untuk Anda. Jika pada gilirannya, Anda perlu mengubah dokumen XML menjadi Javabean sederhana, O/XMapper Spring juga kompeten.
Satu hal yang perlu diperhatikan: Springo/XMapper hanyalah antarmuka terpadu yang diimplementasikan oleh kerangka kerja pihak ketiga yang populer. Untuk memanfaatkan fungsi O/X Spring, Anda memerlukan utilitas yang mengonversi bolak -balik antara objek Java dan XML. Castor adalah alat pihak ketiga yang populer, dan artikel ini akan menggunakan alat ini. Alat -alat lain lainnya termasuk XMLBeans, Java Architecture untuk XMLBINDING (JAXB), JIBX dan XStream.
Marshalling dan Union
Saat melakukan pemetaan O/X, Anda sering melihat istilah marshalling dan tanpa ganti.
Marshalling mengacu pada proses mengubah Javabean menjadi dokumen XML, yang berarti bahwa semua bidang dan nilai lapangan JavaBean akan dihuni ke dalam file XML sebagai elemen atau atribut XML. Terkadang, marshalling juga disebut serial.
Seperti yang Anda duga, unmarshalling adalah proses yang berlawanan dari marshalling, yaitu untuk mengubah dokumen XML menjadi JavaBean, yang berarti bahwa semua elemen atau atribut dokumen XML dihuni ke dalam Javabean sebagai Java Fields. Terkadang, unmarshalling juga disebut deserializing.
Manfaat Menggunakan O/XMapper Spring
Salah satu manfaat paling langsung dari menggunakan O/XMapper Spring adalah bahwa konfigurasi dapat disederhanakan dengan memanfaatkan fitur lain dari kerangka kerja Spring. Perpustakaan Bean Spring mendukung penggunaan objek yang menggunakan injeksi marshaller O/X instantiated (mis. "Injeksi ketergantungan" yang disebutkan sebelumnya). Ikuti kembali bahwa ini akan mempercepat pengembangan dan penyebaran aplikasi.
Mengikuti praktik desain yang berorientasi objek yang solid, kerangka kerja Springo/X mendefinisikan hanya dua antarmuka: Marshaller dan Unmarshaller, yang digunakan untuk melakukan fungsi O/X, yang merupakan manfaat signifikan lain dari menggunakan kerangka kerja ini. Implementasi antarmuka ini sepenuhnya terbuka untuk pengembang independen, dan pengembang dapat dengan mudah mengubahnya tanpa memodifikasi kode. Misalnya, jika Anda mulai dengan Castor untuk konversi O/X, tetapi kemudian temukan bahwa ia tidak memiliki fungsionalitas yang Anda butuhkan, pada titik ini Anda dapat beralih ke XMLBeans tanpa perubahan kode. Satu -satunya hal yang perlu Anda lakukan adalah mengubah file konfigurasi pegas untuk menggunakan kerangka kerja O/X yang baru.
Manfaat lain dari menggunakan O/XMapper Spring adalah hierarki pengecualian terpadu. Kerangka pegas mengikuti pola yang ditetapkan dengan menggunakan modul akses data dengan membungkus objek pengecualian asli menjadi pengecualian runtime yang dibuat oleh Spring itu sendiri untuk O/XMapper. Karena pengecualian asli yang dilemparkan oleh penyedia pihak ketiga dibungkus dengan pengecualian runtime musim semi, Anda dapat mengetahui akar penyebab pengecualian. Anda tidak perlu repot -repot memodifikasi kode untuk menangkap pengecualian, karena pengecualian dibungkus menjadi pengecualian runtime. Pengecualian runtime berikut memperluas pengecualian yang mendasari XMLMappingException: GenericMarShallingFailureException, ValidationFailureException, MarshallingFailureException, dan UnmarshallingFailureException.
Memulai dengan Pak
Daftar Konfigurasi:
ApplicationContext.xmlspring File Konfigurasi
<beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http:/xmlschema" xsi: schemalocation = "http:/htaMaMer.org. http://www.springframework.org/schema/beans/spring-weans-3.0.xsd "> <bean id =" oxmdemo "> <nama properti =" marshaller "ref =" castormarshaller "/<Property name =" unmarshaller "castormarshaller"/> </unmarshaller "castormarshaller"/> </unmarshaller "castormarshaller"/> </unmarshaller "castormarshaller"/</name/unmarshaller "castormarshaller"/</name/unmarshaller "castormarshaller" Paket: castor-1.3.2-core.jar, castor-1.3.2-xml.jar-> <bean id = "castormarshaller"> <name properti = "mappinglocation" value = "classpath: mapping.xml"/> </bean> </bean>
Saat marshalling dan tidak bertelur, format pemetaan yang diterapkan harus digunakan untuk berhasil ketika tidak mengelupas (ada pertanyaan di sini. Saya tidak tahu apakah itu hanya dapat diformat melalui pemetaan ke Ungroup karena masalah penulisan saya sendiri, jika tidak kesalahan yang tidak dapat ditemukan oleh rootelement akan dilaporkan).
file mapping.xml
<Mapping> <class name = "com.mdf.springoxm.customer"> <map-to xml = "customer"/> <field name = "flag" type = "boolean"> <bind-xml name = "flag" node = "element"/> </field name = "name =" name "type =" string "> <node" </element "" name = name = "name" name "type =" string "> <bind-" "name" name = name = name = "name" type = "string"> <bind- "" "name = name = name =" name "type =" string "> <bind" field " name = "sex" type = "string"> <bind-xml name = "sex" node = "element"/> </field> </belas> </papping>
Kustomisasi file kacang
Customer.java
Paket com.mdf.springoxm; Pelanggan kelas publik {nama string pribadi; private string sex; bendera boolean privat; string publik getName () {return name;} public void setName (nama string) {this.name = name;} public string getsex () {return sex;} public void setSex (string sex) {this) {public boolex = return sex;} public void setSex (string sex) {this) {public {minya. flag;} public void setFlag (boolean flag) {this.flag = flag;}}file xmldemo.java
Paket com.mdf.springoxm; import java.io.fileInputStream; impor java.io.fileoutputStream; import java.io.ioException; impor javax.xml.transform.stream.streamResult; impor orgax.xml.transform.streamsform. org.springframework.oxm.Unmarshaller;public class oxmDemo{private Marshaller marshaller;private Unmarshaller unmarshaller;public Marshaller getMarshaller() {return marshaller;}public void setMarshaller(Marshaller marshaller) {this.marshaller = marshaller;}public Unmarshaller getUnmarshaller() {return unmarshaller;}public void setUnmarshaller(Unmarshaller unmarshaller) {this.unmarshaller = unmarshaller;}public void convertFromObjectToXML(Object object, String filepath) throws IOException {FileOutputStream os = null;try {os = new FileOutputStream (FilePath); getMarshaller (). Marshal (objek, streamResult baru (OS));} akhirnya {if (os! = Null) {os.close ();}}} objek publik ConvertFromXMlToObject (string newLfile) lemparan ioINEnException {newinpute (string newPlePle (string newProme (string newProm (string newPromxtreM (string newPromxStreM (string) FileInputStream (xmlfile); return getunmarshal (). Unmarshal (streamSource baru (is));} akhirnya {if (is! = Null) {is.close ();}}}}tes
impor org.springframework.context.applicationContext; impor org.springframework.context.support.classpathxmlapplicationContext; import com.mdf.springoxm.customer; impor comception oMerception oMedf.springoxm.oxmdemo; impor javao. Xml_file_name = "customer.xml"; public static void main (string [] args) melempar ioException {applicationContext appContext = new classpathxmlapplicationContext ("applicationContext.xml"); Oxmdemo converter = (oxmdemo) oxmdemo (oxmdemo) oxmdemo converter (oxmdemo) (oxmdemo " Customer (); customer.setname ("yiibai"); customer.setflag (true); customer.setsex ("haikou haidiandao"); System.out.println ("Konversi objek ke xml!"); // dari objek ke xml converter.convertfromjectttttttttttttox (xmmlompe.ponnome. /n");system.out.println("Convert XML kembali ke objek! "); // dari xml ke objek pelanggan pelanggan2 = (pelanggan) converter.convertfromxmlToObject (xml_file_name); System.out.println (customer2); System.out.println (deln); System.out.println (customer2); System.out.println (" Deln ("Deln (" Deln ("Deln (" Deln ("Deln (" DELN (DELN ("Hasil tes:
11 Mei 2016 2:27:52 PM org.springframework.context.support.classpathxmlapplikasiContext Informasi PrepareFresh: Regreshing org.springframework.context.support.support.classpathxmlicationContext:1221be2: startup. Root of Context Hierarchy 11 Mei 2016 2:27:52 PM org.springframework.beans.factory.xml.xmlbeandefinitionReader LoadBeandefinitions Informasi: Memuat Definisi Bean XML dari Kelas Path Resource [ApplicationContext.xml] Mei 2016 2:2 2:27:5:5 PM [ApplicationContext.xml] Mei 2016 2:2 2:27:2:5:5 PM [ApplicationContext.xml] Mei 2016 2:2 2:27:2:5: org.springframework.oxm.castor.castormarshaller AfterPropertiesset Informasi: Dikonfigurasi menggunakan [sumber daya kelas kelas [mapping.xml]] Konversi objek ke xml! Selesai mengonversi XML kembali ke objek! com.mdf.springoxm.customer@b419da selesai
Meringkaskan
Di atas adalah semua tentang contoh entri Spring Oxm dalam artikel ini, saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke topik terkait lainnya di situs ini. Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!