Spring OXM - 概述



Spring 框架使用全域性編組器/解組器介面提供物件/XML 或 O/X 對映,並允許輕鬆切換 O/X 對映框架。將物件轉換為 XML 的過程稱為 XML 編組/序列化,而從 XML 轉換為物件的過稱為 XML 解組/反序列化。

Spring 框架提供Marshaller 和 UnMarshaller 介面,其中 Marshaller 介面負責將物件編組到 XML,而 UnMarshaller 介面將 xml 解組到物件。以下是使用 Spring OXM 框架的主要優點。

  • 輕鬆配置 − 使用 Spring bean 上下文工廠,建立編組器/解組器非常容易,並且可以配置,而無需擔心 O/X 庫結構,如 JAXB 上下文、JiBX 繫結工廠等。編組器/解組器可以像任何其他 bean 一樣進行配置。

  • 一致的介面 − Marshaller 和 UnMarshaller 是全域性介面。這些介面為其他 O/X 對映框架提供了一個抽象層,允許在它們之間切換而無需更改程式碼或只需少量程式碼更改。

  • 一致的異常處理 − 所有底層異常都對映到 XmlMappingException 作為根異常。因此,開發人員無需擔心底層 O/X 對映工具自己的異常層次結構。

Marshaller

Marshaller 是一個具有單個方法 marshal 的介面。

public interface Marshaller {
   /**
      * Marshals the object graph with the given root into the provided Result.
   */
   void marshal(Object graph, Result result)
      throws XmlMappingException, IOException;
}

其中 graph 是任何要編組的物件,result 是一個標記介面,用於表示 XML 輸出。以下是可用的型別:

  • javax.xml.transform.dom.DOMResult − 表示 org.w3c.dom.Node。

  • javax.xml.transform.sax.SAXResult − 表示 org.xml.sax.ContentHandler。

  • javax.xml.transform.stream.StreamResult − 表示 java.io.File、java.io.OutputStream 或 java.io.Writer。

UnMarshaller

UnMarshaller 是一個具有單個方法 unmarshal 的介面。

public interface UnMarshaller {
   /**
      * Unmarshals the given provided Source into an object graph.
   */
   Object unmarshal(Source source)
      throws XmlMappingException, IOException;
}

其中 source 是一個標記介面,用於表示 XML 輸入。以下是可用的型別:

  • javax.xml.transform.dom.DOMSource − 表示 org.w3c.dom.Node。

  • javax.xml.transform.sax.SAXSource − 表示 org.xml.sax.InputSource 和 org.xml.sax.XMLReader。

  • javax.xml.transform.stream.StreamSource − 表示 java.io.File、java.io.InputStream 或 java.io.Reader。

廣告
© . All rights reserved.