Was ist O/Xmapper?
Eine neue Funktion von Frühling 3.0 ist o/xmapper. Das Konzept von O/X Mapper ist nicht neu. O repräsentiert Objekt und x repräsentiert XML. Sein Zweck ist es, zwischen Java -Objekten (fast immer ein PlainoldjavaObject oder als Pojo) und XML -Dokumente zu konvertieren.
Zum Beispiel haben Sie möglicherweise eine einfache Bohne mit mehreren Attributen, und Ihr Unternehmen muss dieses Java -Objekt in ein XML -Dokument umwandeln. Das O/XMapper von Spring kann dieses Problem für Sie lösen. Wenn Sie wiederum ein XML -Dokument in einen einfachen Javaboan umwandeln, ist der O/Xmapper von Spring ebenfalls kompetent.
Eine Sache zu beachten: Springo/Xmapper ist nur eine einheitliche Schnittstelle, die von beliebten Frameworks von Drittanbietern implementiert wird. Um die O/X -Funktionalität von Spring zu nutzen, benötigen Sie ein Dienstprogramm, das zwischen Java -Objekten und XML hin und her wandelt. Castor ist ein so beliebtes Tool von Drittanbietern, und dieser Artikel wird dieses Tool verwenden. Weitere derartige Tools sind XMLBeans, Java -Architektur für Xmlbinding (JAXB), JIBX und Xstream.
Marshalling und Union
Wenn Sie O/X -Zuordnung durchführen, sehen Sie häufig die Begriffe, die Marshalle und Unmarshalling marken.
Marshalling bezieht sich auf den Prozess der Konvertierung eines Javabäer in ein XML -Dokument, was bedeutet, dass alle Felder und Feldwerte eines JavaBean als XML -Elemente oder -attribute in die XML -Datei gefüllt werden. Manchmal wird das Marshalle auch als Serialisierung bezeichnet.
Wie zu erwarten ist, ist Unmarshalling der genau entgegengesetzte Prozess des Marshalle, bei dem ein XML -Dokument in ein Javaboan umwandelt, was bedeutet, dass alle Elemente oder Attribute des XML -Dokuments als Java -Felder in die JavaBean gefüllt werden. Manchmal wird das Unmarshalling auch als Deserialisierung bezeichnet.
Vorteile der Verwendung von Spring's O/Xmapper
Einer der direktesten Vorteile der Verwendung von Spring's O/Xmapper besteht darin, dass die Konfiguration durch die Nutzung anderer Merkmale des Spring -Frameworks vereinfacht werden kann. Die Bohnenbibliothek von Spring unterstützt die Verwendung von Objekten, die eine sofortige O/X -Marshallerinjektion verwenden (d. H. "Abhängigkeitsinjektion", die zuvor erwähnt wurde). Wiederholen Sie, dass dies die Anwendungsentwicklung und -bereitstellung beschleunigt.
Nach soliden, objektorientierten Designpraktiken definiert das Springo/X-Framework nur zwei Schnittstellen: Marshaller und Unmarshaller, die zur Durchführung von O/X-Funktionen verwendet werden. Dies ist ein weiterer bedeutender Vorteil der Verwendung dieses Frameworks. Die Implementierung dieser Schnittstellen ist vollständig offen für unabhängige Entwickler, und Entwickler können sie leicht wechseln, ohne den Code zu ändern. Wenn Sie beispielsweise mit Castor für die O/X -Konvertierung beginnen, aber dann feststellen, dass Ihnen eine Funktionalität fehlen, können Sie an diesem Punkt ohne Codesänderungen zu XMLBeans wechseln. Das einzige, was Sie tun müssen, ist die Federkonfigurationsdatei zu ändern, um das neue O/X -Framework zu verwenden.
Ein weiterer Vorteil der Verwendung von Spring's O/Xmapper ist die einheitliche Ausnahmehierarchie. Das Spring -Framework folgt dem Muster, das durch die Verwendung seines Datenzugriffsmoduls erstellt wurde, indem das ursprüngliche Ausnahmebobjekt in eine Runtime -Ausnahme eingewickelt wird, die von Spring selbst für O/Xmapper erstellt wurde. Da die ursprüngliche Ausnahme eines Drittanbieters in die Ausnahme von Spring Runtime eingebunden ist, können Sie die Hauptursache für die Ausnahme herausfinden. Sie müssen sich nicht die Mühe machen, den Code zu ändern, um die Ausnahme zu fangen, da die Ausnahme in eine Laufzeitausnahme eingebunden ist. Die folgenden Ausnahmen der Laufzeit erweitern die zugrunde liegende Ausnahme xmlmapPingexception: genericMarshallingFailureException, ValidationFailureException, MarshallingFailureException und UnmarshallingFailureException.
Erste Schritte mit Sir
Konfigurationsliste:
applicationContext.xmlspring -Konfigurationsdatei
<beans xmlns = "http://www.springframework.org/schema/bean http://www.springframework.org/schema/beans/spring-beans-3.0.xsd "> <bean id =" oxmdemo "> <Property name =" Marshaller "Ref =" CastorMarshaller "/> <Property name =" Inmarshaller "Ref =" CastorMarhalter "/</bean> <!-- Paket: Castor-1.3.2-core.jar, Castor-1.3.2-xml.jar-> <bean id = "castormarshaller"> <Eigenschaft name = "mapingLocation" value = "classPath: maping.xml"/> </bean> </beans>
Beim Marken- und Gruppieren muss das angelegte Zuordnungsformat zum Erfolg bei der Ungruppierung verwendet werden (es gibt hier eine Frage. Ich weiß nicht, ob es aufgrund meines eigenen Schreibproblems nur durch die Zuordnung zur Ungruppe formatiert werden kann, da sonst ein Fehler, bei dem die Rootelement nicht gefunden werden kann, gemeldet wird).
maping.xml Datei
<maping> <class name = "com.mdf.springoxm. customer"> <map-to xml = "customer"/> <field name = "flag" type = "boolean"> <bind-xml name = "flag" node name = "sex" type = "string"> <bind-xml name = "sex" node = "element"/> </field> </class> </mapping>
Anpassen von Bean -Dateien
Customer.java
package com.mdf.springoxm;public class Customer {private String name;private String sex;private Boolean flag;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public Boolean getFlag() {return Flag;} public void setflag (Boolean Flag) {this.flag = flag;}}XMldemo.java -Datei
Paket com.mdf.springoxm; import java.io.fileinputstream; import Java.io.FileOutputStream; Import Java.io.ioException; import javax.xml.transform.stream.streamResult; org.springframework UNMARSHALLER;} public void setunmarshaller (unmarshaller unmarshaller) {this.unmarshaller = unmarshaller;} public void convertfromObjecttoxml (Objektobjekt, String -Filepath) Throws IOException {FileputStream Os = Null; try -{os = new Dateistream (NEW Dateistream). StreamResult(os));} finally {if (os != null) {os.close();}}}public Object convertFromXMLToObject(String xmlfile) throws IOException {FileInputStream is = null;try {is = new FileInputStream(xmlfile);return getUnmarshal().unmarshal(new StreamSource (IS));} endlich {if (is! = Null) {is.close ();}}}}prüfen
import org.springframework.context.applicationContext; import org.springframework.context.support.classpathxmlapplicationContext; Xml_file_name = "customer.xml"; public static void main (String [] args) löst IOException aus {ApplicationContext appcontext = new classpathxmlapplicationContext ("ApplicationContext.xml"); Customer (); customer.setName ("yiibai"); customer.setFlag (true); customer.setSex ("haikou haidiandao"); /n"); system.out.println("Convert XML Back to Object! "); // von xml zu Object Customer Customer2 = (Customer) Converter.ConvertfromxMltoObject (xml_file_name); System.out.println (Customer2);Testergebnisse:
11. Mai 2016 14:27:52 Uhr org.springframework.context.support.classPathxMlApplicationContext -Vorbereitungsvorbereitungen: Aktualisieren orgs org.springFramework Wurzel der Kontexthierarchie 11. Mai 2016 14:27:52 Uhr org.springframework.bean.factory.xml.xmlbeandefinitionReader LoadbeanDeFinition Informationen: Laden XML Bean Definitionen aus der Klassenpfad [ApplicationContext.xml] Mai 11, 2016 2:27:52 PMPressourcen org.springframework.oxm.castor.castormarshaller nach PropertieStieStet Informationen: Konfiguriert mit [Klasse Path Resource [maping.xml]] Objekt in XML konvertieren! DER DEFERTE XML BACK IN EOGANISION! com.mdf.springoxm.customer@b419da fertig
Zusammenfassen
Das obige dreht sich alles um das Beispiel für das Frühlings -Oxm -Eintrag in diesem Artikel. Ich hoffe, es wird für alle hilfreich sein. Interessierte Freunde können weiterhin auf andere verwandte Themen auf dieser Website verweisen. Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank an Freunde für Ihre Unterstützung für diese Seite!