O/XMapperとは何ですか?
Spring 3.0の新機能はO/XMapperです。 O/Xマッパーの概念は新しいものではありません。 oはオブジェクトを表し、xはxmlを表します。その目的は、Javaオブジェクト(ほとんどの場合、PlainOldJavaObject、またはPojoとして省略)とXMLドキュメント間で前後に変換することです。
たとえば、いくつかの属性を備えた単純なBeanがある場合があり、ビジネスはそのJavaオブジェクトをXMLドキュメントに変換する必要があります。 SpringのO/XMapperは、あなたのためにその問題を解決できます。次に、XMLドキュメントを単純なJavabeanに変換する必要がある場合、SpringのO/XMapperも有能です。
注意すべきことの1つは、Springo/Xmapperは、人気のあるサードパーティフレームワークによって実装された統一されたインターフェイスです。 SpringのO/X機能を活用するには、JavaオブジェクトとXMLの間を行き来するユーティリティが必要です。キャスターは非常に人気のあるサードパーティツールであり、この記事ではこのツールを使用します。他のそのようなツールには、XMLBEANS、XMLBinding(JAXB)のJavaアーキテクチャ、JIBX、XStreamが含まれます。
マーシャリングとユニオン
o/xマッピングを行うと、マーシャリングと非射撃という用語がよく表示されます。
マーシャリングとは、JavabeanをXMLドキュメントに変換するプロセスを指します。つまり、Javabeanのすべてのフィールドとフィールド値がXML要素または属性としてXMLファイルに入力されます。時には、マーシャリングはシリアル化とも呼ばれます。
ご想像のとおり、ゼンマーシュリングはマーシャリングの正反対のプロセスです。これは、XMLドキュメントをJavabeanに変換することです。つまり、XMLドキュメントのすべての要素または属性がJava FieldsとしてJavabeanに入力されます。時には、非マーシャリングは脱介入とも呼ばれます。
SpringのO/XMapperを使用することの利点
SpringのO/XMapperを使用することの最も直接的な利点の1つは、Springフレームワークの他の機能を活用することで構成を簡素化できることです。 SpringのBean Libraryは、インスタンス化されたO/Xマーシャラーインジェクション(つまり、前述の「依存噴射」)を使用するオブジェクトの使用をサポートしています。これにより、アプリケーションの開発と展開がスピードアップされると繰り返します。
Springo/Xフレームワークは、オブジェクト指向の固体設計プラクティスに従って、2つのインターフェイスのみを定義します。MarshallerとUnmarshallerは、O/X関数を実行するために使用されます。これは、このフレームワークを使用することのもう1つの重要な利点です。これらのインターフェイスの実装は、独立した開発者に完全に開かれており、開発者はコードを変更せずに簡単に切り替えることができます。たとえば、o/x変換のキャスターから始めますが、必要な機能が不足していることがわかります。この時点で、コード変更なしでxmlbeansに切り替えることができます。必要な唯一のことは、新しいO/Xフレームワークを使用してSpring構成ファイルを変更することです。
SpringのO/XMapperを使用するもう1つの利点は、統合された例外階層です。 Springフレームワークは、O/XMapperのSpring自体によって作成されたランタイム例外に元の例外オブジェクトをラッピングすることにより、データアクセスモジュールを使用して確立されたパターンに従います。サードパーティのプロバイダーによってスローされた元の例外は、春のランタイム例外に包まれているため、例外の根本原因を見つけることができます。例外がランタイムの例外にラップされているため、例外をキャッチするためにコードを変更する必要はありません。次のランタイムの例外は、基礎となる例外xmlMlmappingExceptionを拡張します:genericmarshallingfailureexception、validationfailureexception、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/beans/spring-beans-3.0.xsd" "> <bean id =" oxmo " name = "unmarshaller" ref = "castormarshaller"/> </bean> <! - キャスターパッケージの紹介:castor-1.3.2-core.jar、castor-1.3.2-xml.jar-> <bean id = "castormarshaller"> <プロパティname = "マッピングロケーション"価値= "Classpath:</bean> </bean> </bean>
マーシャリングとグループ化の場合、マッピング形式を適用した場合は、グループ化したときに成功するために使用する必要があります(ここで質問があります。自分の執筆問題のためにグループ化するためにマッピングを介してフォーマットすることができるかどうかはわかりません。
mapping.xmlファイル
<マッピング> <class name = "com.mdf.springoxm.customer"> <map-to xml = "customer"/> <field name = "flag" type = "boolean"> <bind-xml name = "flag" node = "node =" ement "/> </field> <field name =" type = ""/> <"node"> <bind-xml " name = "sex" type = "string"> <bind-xml name = "sex" node = "element"/> </field> </class> </mapping>
Beanファイルをカスタマイズします
customer.java
パッケージcom.mdf.springoxm; public class customer {private string name; private string sex; private boolean flag; public name getname(){return name;} public void setname(this.name = name;} public string getsex(){return sex;} public setsex(return sex;} public sex;} public sex;} flag;} public void setflag(boolean flag){this.flag = flag;}}xmldemo.javaファイル
パッケージcom.mdf.springoxm; Import java.io.fileinputStream; Import java.io.fileoutputStream; Import java.io.io.ioexception; import javax.xml.transform.stream.streamResult; import javax.xml.transform.stream.StreamSource; inrg.sprring.mmarsource; org.springframework.oxm.unmarshaller; public class oxmdemo {private marshaller marshaller; private unmarshaller unmarshaller; public Marshaller getmarshaller(){return marshaller;} public void setmarshaller(Marshaller Marshaller; getunmarshaller(){return unmarshaller;} public void setunmarshaller(unmarshaller unmarshaller){this.unmarshaller = unmarshaller;} public void fromobjecttoxml(object object、string filepath)Throws ioexception fileoutputStream(filepath); getmarshaller()。マーシャル(オブジェクト、new StreamResult(os));}最後に{if(os!= null){os.close();}}} public convertfromxmltoObject(string xmlfile)throws ioexception fileInputStream(xmlfile); return getunmarshal()。unmarshal(new StreamSource(is));}最後に{if(is!= null){is.close();}}}}}}テスト
org.springframework.context.applicationcontext; Import org.springframework.context.support.classpathxmlapplicationcontext; Import com.mdf.springoxm.customer; Import com.mdf.springoxm.oxmdemo; xml_file_name = "Customer.xml"; public static void main(string [] args)throws ioexception {applicationContext appContext = new ClassPathxMLApplicationContext( "ApplicationContext.xml"); customer(); customer.setname( "yiibai"); customer.setflag(true); customer.setsex( "haikou haidiandao"); system.out.println( "オブジェクトをxml!"); /n"; system.out.println( "convert xml back back back to object!"); // xmlからcustomer customer2 =(customer)converter.convertfromxmltoobject(xml_file_name); system.out.println(customer2); system.out.println( ");}}}}テスト結果:
2016年5月11日午後2:27:52 PM org.springframework.context.support.classpathxmlapplicationcontext preparerefresh情報:reghting org.springframework.context.support.classpathxmlapplicationcontext@12121bbe2:wred datup文脈のルート階層のルート2016年5月11日午後2:27:52 PM org.springframework.beans.factory.xml.xml.xml.xml.definitionReader loadbeandefinitions情報:クラスパスリソースからのXMLビーン定義の読み込み[ApplicationContext.xml] 5月11日AfterPropertiesset情報:[クラスパスリソース[Mapping.xml]]を使用して構成オブジェクトをXMLに変換します! XMLをオブジェクトに変換しました! com.mdf.springoxm.customer@b419da done
要約します
上記は、この記事のSpring Oxmエントリの例に関するすべてです。誰にとっても役立つことを願っています。興味のある友人は、このサイトの他の関連トピックを引き続き参照できます。欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!