Open-Source Wikis

/

Spring Framework

/

Modules

/

spring-oxm

spring-projects/spring-framework

spring-oxm

Active contributors: Juergen Hoeller, Sam Brannen

Purpose

spring-oxm (Object/XML Marshalling) provides Spring's abstraction over different XML binding frameworks. It defines the Marshaller and Unmarshaller interfaces and ships a JAXB implementation. While XML is much less common in modern Spring apps than JSON, this module remains the integration point for SOAP, JAX-WS, and any subsystem that produces or consumes XML payloads.

Directory layout

spring-oxm/
├── spring-oxm.gradle                              # uses XJC plugin for test schema generation
└── src/main/java/org/springframework/oxm/
    ├── Marshaller.java
    ├── Unmarshaller.java
    ├── XmlMappingException.java
    ├── ValidationFailureException.java
    ├── jaxb/                                       # JAXB implementation
    ├── support/
    └── …

Key abstractions

Type File Role
Marshaller spring-oxm/src/main/java/org/springframework/oxm/Marshaller.java Object → XML
Unmarshaller spring-oxm/src/main/java/org/springframework/oxm/Unmarshaller.java XML → object
Jaxb2Marshaller spring-oxm/src/main/java/org/springframework/oxm/jaxb/Jaxb2Marshaller.java JAXB-based bidirectional marshaller
XmlMappingException spring-oxm/src/main/java/org/springframework/oxm/XmlMappingException.java Top-level marshalling exception

How it works

The two interfaces are dead simple:

public interface Marshaller {
    void marshal(Object graph, Result result) throws IOException, XmlMappingException;
    boolean supports(Class<?> clazz);
}

Jaxb2Marshaller wraps JAXB. It supports class-list–driven contexts (no META-INF/jaxb.index needed) and handles validation, schema location, and namespace prefixes.

The marshaller is plugged into:

  • spring-web's MarshallingHttpMessageConverter for @RequestBody/@ResponseBody XML in MVC.
  • spring-webflux's reactive XML codecs (Jaxb2XmlEncoder / Jaxb2XmlDecoder).
  • Older RMI/JMS XML payload bridges.

Integration points

  • Standalone — depends only on spring-beans and spring-core.
  • Used by spring-web (XML message converters), older remoting modules.
  • AOT — JAXB classes need reflection hints; Jaxb2Marshaller registers them via RuntimeHintsRegistrar.

Entry points for modification

  • New marshaller (e.g., XStream, Castor revival) — implement Marshaller and Unmarshaller.
  • JAXB customizationJaxb2Marshaller exposes setters for almost every JAXB knob.

See also

Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.

spring-oxm – Spring Framework wiki | Factory