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。

广告