Qu'est-ce que O / Xmapper?
Une nouvelle fonctionnalité de Spring 3.0 est O / Xmapper. Le concept de mappeur O / X n'est pas nouveau. O représente l'objet et x représente XML. Son objectif est de se convertir entre les objets Java (presque toujours un PlainoldJavaObject, ou abrégé sous forme de pojo) et les documents XML.
Par exemple, vous pourriez avoir un bean simple avec plusieurs attributs, et votre entreprise doit convertir cet objet Java en document XML. O / XMapper de Spring peut résoudre ce problème pour vous. Si à son tour, vous devez convertir un document XML en un simple Javabean, O / XMapper de Spring est également compétent.
Une chose à noter: Springo / xmapper n'est qu'une interface unifiée implémentée par des frameworks tiers populaires. Pour profiter de la fonctionnalité O / X de Spring, vous avez besoin d'un utilitaire qui convertit dans les deux sens entre les objets Java et XML. Castor est un outil tiers si populaire, et cet article utilisera cet outil. D'autres outils de ce type incluent XMLBeans, Java Architecture for XMLBinding (JAXB), Jibx et Xstream.
Marshalling et Union
Lorsque vous effectuez un mappage O / X, vous voyez souvent les termes de rassemblement et de non-arshalling.
Le maréchalage fait référence au processus de conversion d'un Javabean en document XML, ce qui signifie que tous les champs et valeurs de champ d'un JavaBean seront remplis dans le fichier XML sous forme d'éléments ou d'attributs XML. Parfois, le rassemblement est également appelé sérialisation.
Comme vous pouvez vous y attendre, le non-arshalling est le processus opposé exact de rassemblement, qui consiste à convertir un document XML en Javabean, ce qui signifie que tous les éléments ou attributs du document XML sont peuplés dans le Javabean en tant que champs Java. Parfois, la non-arshalling est également appelée désérialisation.
Avantages de l'utilisation de Spring's O / Xmapper
L'un des avantages les plus directs de l'utilisation de O / XMapper de Spring est que la configuration peut être simplifiée en tirant parti des autres fonctionnalités du cadre Spring. La bibliothèque de bean de Spring prend en charge l'utilisation d'objets qui utilisent l'injection instanciée d'O / X Marshaller (c'est-à-dire «l'injection de dépendance» mentionnée précédemment). Réitérez que cela accélérera le développement et le déploiement des applications.
Après des pratiques de conception orientées objet solides, le cadre Springo / X définit uniquement deux interfaces: Marshaller et Unmarshaller, qui sont utilisés pour remplir les fonctions O / X, qui est un autre avantage significatif de l'utilisation de ce cadre. L'implémentation de ces interfaces est complètement ouverte aux développeurs indépendants, et les développeurs peuvent facilement les changer sans modifier le code. Par exemple, si vous commencez par Castor pour la conversion O / X, mais que vous manquez de fonctionnalité dont vous avez besoin, à ce stade, vous pouvez passer à XMLBeans sans aucun changement de code. La seule chose que vous devez faire est de modifier le fichier de configuration de ressort pour utiliser le nouveau framework O / X.
Un autre avantage de l'utilisation de Spring's O / XMapper est la hiérarchie des exceptions unifiées. Le framework Spring suit le modèle établi en utilisant son module d'accès aux données en enveloppe l'objet d'exception d'origine dans une exception d'exécution créée par Spring lui-même pour O / XMapper. Étant donné que l'exception originale lancée par un fournisseur tiers est enveloppée dans l'exception de l'exécution du printemps, vous pouvez découvrir la cause première de l'exception. Vous n'avez pas à prendre la peine de modifier le code pour prendre l'exception, car l'exception est enveloppée dans une exception d'exécution. Les exceptions d'exécution suivantes étendent l'exception sous-jacente XMLMappingException: généricarshallingfailureException, validationfailureException, MarshallingFailureException et UnmarshallingFailureException.
Commencer avec Sir
Liste de configuration:
Fichier de configuration d'applicationContext.xmlspring
<Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http://www.springfrrame http://www.springframework.org/schema/beans/spring-beans-3.0.xsd "> <bean id =" oxmdemo "> <propriété name =" marshaller "Ref =" CastorMarshaller "/> <propriété name =" unmarshaller "ref =" CastorShaller "/> </ bean> Package: Castor-1.3.2-core.jar, Castor-1.3.2-xml.jar -> <bean id = "CastOrNarshaller"> <propriété name = "MappingLocation" value = "classpath: mapping.xml" /> </ bean> </ Beans>
Lorsque le marshalling et le débrouillage, le format de mappage appliqué doit être utilisé pour réussir lors de la désintégration (il y a une question ici. Je ne sais pas si elle ne peut être formatée que par la cartographie pour ne pas être en raison de mon propre problème d'écriture, sinon une erreur que l'on ne peut pas être trouvé que le rootElement ne sera pas signalé).
Mapping.xml Fichier
<mapping> <class named = "com.mdf.springoxm.customer"> <map-to xml = "client" /> <champ name = "file" type = "booléen"> <bind-xml name = "Flag" node = "élément" /> </ champ> <champ name = "name" type = "string"> <bind-xml name = "name" node = "élément" / </ field> <fiel name = "sexe" type = "string"> <bind-xml name = "sexe" node = "élément" /> </ field> </ class> </ mapping>
Personnaliser les fichiers Bean
Client.java
Package com.mdf.springoxm; Client de classe publique {nom de chaîne privée; chaîne privée sexe; Flag booléen privé; String public GetName () {Name return;} public void setName (nom de chaîne) {this.name = name;} public String GetSEX () {return Sex;} public Void SetSEX (String Sex) {this.sex = sexe;} public booolean getflag () {return) Flag;} public void setflag (booléen drapeau) {this.flag = drapeau;}}fichier xmldemo.java
Package com.mdf.springoxm; import java.io.fileInputStream; import java.io.fileoutputStream; importer java.io.ioexception; import javax.xml.transform.stream.streamresult; import javax.xml.transform.stream.streamsource; import org.spring org.springframework.oxm.unmarshaller; public class oxmdemo {private marshaller Marshaller; private Unmarshaller unmarshaller; public marshaller getmarshaller () {return Marshaller; getunmarshaller () {return unmarshaller;} public void setunmarshaller (unmarshaller unmarshaller) {this.unmarshaller = unmarshaller;} public void convertfromobjecttoxml (objet objet, string filepath) lance ioexception {fileoutputtream OS = null; Try; FileOutputStream (filepath); getMarshaller (). Marshal (objet, new StreamResult (os));} enfin {if (os! = Null) {os.close ();}}} public objet convertfromxmltoObject (string xmlfile) lance ioException {fileInputStream is = null; Try {est = new FileInputStream (xmlfile); return getUnmarShal (). Unarshal (new Streamsource (is));} enfin {if (is! = Null) {is.close ();}}}}test
import org.springframework.context.applicationContext; import org.springframework.context.support.classpathxmlapplicationcontext; import com.mdf.springoxm.custère; import com.mdf.springoxm.oxmdemo; Importer la chaîne java.ioexception; classe publique MAIN "Customer.xml"; public static void main (String [] args) lève ioException {applicationContext AppContext = new ClassPathxmlApplicationContex Customer (); Customer.SetName ("Yiibai"); Customer.Setflag (true); Customer.SetSEX ("Haikou Haidiandao"); System.out.println ("Convert Object to XML!"); // De l'objet à Xml File Converter.Convert /n");system.out.println("convert xml à l'objet! "); // de xml à l'objet client client2 = (client) converter.convertfromxmltoObject (xml_file_name); System.out.println (client2); System.out.println (" conduit ");}}Résultats des tests:
11 mai 2016 14:27:52 PM org.springframework.context.support.classpathxmlapplicationcontext preparerefresh Informations: rafraîchissant org.springframework.context.support.classpathxmlapplicationcontext@1221be2: date de démarrage [mercredi 11 14:27:51 CST 2016]; Root of Context Hiérarchie 11 mai 2016 14:27:52 PM Org.SpringFramework.Beans.factory.xml.xmlBeAndefinitionReader LoadBeanDefinitions Informations: Chargement des définitions de bean XML From Class Path Resource [ApplicationContext.xml] 11 mai 2016 2:27:52 PM Org.SPringFramework AfterProperTiESSET Informations: configuré à l'aide de [Class Path Resource [mapping.xml]] Convertir l'objet en XML! Fait convertir XML à l'objet! com.mdf.springoxm.customer@b419da fait
Résumer
Ce qui précède est tout au sujet de l'exemple d'entrée du printemps OXM dans cet article, j'espère que cela sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à d'autres sujets connexes sur ce site. S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien pour ce site!