Class Jaxb2Marshaller
- All Implemented Interfaces:
Aware
,BeanClassLoaderAware
,InitializingBean
,GenericMarshaller
,GenericUnmarshaller
,Marshaller
,MimeMarshaller
,MimeUnmarshaller
,Unmarshaller
GenericMarshaller
interface for JAXB 2.2.
The typical usage will be to set either the "contextPath" or the "classesToBeBound" property on this bean, possibly customize the marshaller and unmarshaller by setting properties, schemas, adapters, and listeners, and to refer to it.
- Since:
- 3.0
- Author:
- Arjen Poutsma, Juergen Hoeller, Rossen Stoyanchev, Sam Brannen
- See Also:
-
setContextPath(java.lang.String)
setClassesToBeBound(java.lang.Class<?>...)
setJaxbContextProperties(java.util.Map<java.lang.String, ?>)
setMarshallerProperties(java.util.Map<java.lang.String, ?>)
setUnmarshallerProperties(java.util.Map<java.lang.String, ?>)
setSchema(org.springframework.core.io.Resource)
setSchemas(org.springframework.core.io.Resource...)
setMarshallerListener(jakarta.xml.bind.Marshaller.Listener)
setUnmarshallerListener(jakarta.xml.bind.Unmarshaller.Listener)
setAdapters(jakarta.xml.bind.annotation.adapters.XmlAdapter<?, ?>...)
-
Field Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
Invoked by the containingBeanFactory
after it has set all bean properties and satisfiedBeanFactoryAware
,ApplicationContextAware
etc.protected XmlMappingException
Convert the givenJAXBException
to an appropriate exception from theorg.springframework.oxm
hierarchy.Return a newly created JAXB marshaller.Return a newly created JAXB unmarshaller.Class<?>[]
Return the list of Java classes to be recognized by a newly created JAXBContext.Return the JAXB context path.Return the JAXBContext used by this marshaller, lazily building it if necessary.String[]
Return the packages to search for JAXB2 annotations.protected void
initJaxbMarshaller
(Marshaller marshaller) Template method that can be overridden by concrete JAXB marshallers for custom initialization behavior.protected void
initJaxbUnmarshaller
(Unmarshaller unmarshaller) Template method that can be overridden by concrete JAXB marshallers for custom initialization behavior.boolean
Return whether XML external entities are allowed.boolean
Return whether DTD parsing is supported.void
Marshal the object graph with the given root into the providedResult
.void
marshal
(Object graph, Result result, MimeContainer mimeContainer) Marshals the object graph with the given root into the providedResult
, writing binary data to aMimeContainer
.void
setAdapters
(XmlAdapter<?, ?>... adapters) Specify theXmlAdapter
s to be registered with the JAXBMarshaller
andUnmarshaller
.void
setBeanClassLoader
(ClassLoader classLoader) Callback that supplies the beanclass loader
to a bean instance.void
setCheckForXmlRootElement
(boolean checkForXmlRootElement) Specify whether thesupports(Class)
should check for@XmlRootElement
annotations.void
setClassesToBeBound
(Class<?>... classesToBeBound) Set the list of Java classes to be recognized by a newly created JAXBContext.void
setContextPath
(String contextPath) Set a JAXB context path.void
setContextPaths
(String... contextPaths) Set multiple JAXB context paths.void
setJaxbContextProperties
(Map<String, ?> jaxbContextProperties) Set theJAXBContext
properties.void
setLazyInit
(boolean lazyInit) Set whether to lazily initialize theJAXBContext
for this marshaller.void
setMappedClass
(Class<?> mappedClass) Specify a JAXB mapped class for partial unmarshalling.void
setMarshallerListener
(Marshaller.Listener marshallerListener) Specify theMarshaller.Listener
to be registered with the JAXBMarshaller
.void
setMarshallerProperties
(Map<String, ?> properties) Set the JAXBMarshaller
properties.void
setMtomEnabled
(boolean mtomEnabled) Specify whether MTOM support should be enabled or not.void
setPackagesToScan
(String... packagesToScan) Set the packages to search for classes with JAXB2 annotations in the classpath.void
setProcessExternalEntities
(boolean processExternalEntities) Indicate whether external XML entities are processed when unmarshalling.void
Set the schema resource to use for validation.void
setSchemaLanguage
(String schemaLanguage) Set the schema language.void
setSchemaResourceResolver
(LSResourceResolver schemaResourceResolver) Set the resource resolver, as used to load the schema resources.void
setSchemas
(Resource... schemaResources) Set the schema resources to use for validation.void
setSupportDtd
(boolean supportDtd) Indicate whether DTD parsing should be supported.void
setSupportJaxbElementClass
(boolean supportJaxbElementClass) void
setUnmarshallerListener
(Unmarshaller.Listener unmarshallerListener) Set theUnmarshaller.Listener
to be registered with the JAXBUnmarshaller
.void
setUnmarshallerProperties
(Map<String, ?> properties) Set the JAXBUnmarshaller
properties.void
setValidationEventHandler
(ValidationEventHandler validationEventHandler) Set the JAXB validation event handler.boolean
Indicate whether this marshaller can marshal instances of the supplied type.boolean
Indicates whether this marshaller can marshal instances of the supplied generic type.Unmarshal the givenSource
into an object graph.unmarshal
(Source source, MimeContainer mimeContainer) Unmarshals the given providedSource
into an object graph, reading binary attachments from aMimeContainer
.protected Object
unmarshalStaxSource
(Unmarshaller jaxbUnmarshaller, Source staxSource)
-
Field Details
-
logger
Logger available to subclasses.
-
-
Constructor Details
-
Jaxb2Marshaller
public Jaxb2Marshaller()
-
-
Method Details
-
setContextPaths
Set multiple JAXB context paths. The given array of context paths gets converted to a colon-delimited string, as supported by JAXB. -
setContextPath
Set a JAXB context path.Setting either this property,
"classesToBeBound"
or"packagesToScan"
is required. -
getContextPath
Return the JAXB context path. -
setClassesToBeBound
Set the list of Java classes to be recognized by a newly created JAXBContext.Setting either this property,
"contextPath"
or"packagesToScan"
is required. -
getClassesToBeBound
Return the list of Java classes to be recognized by a newly created JAXBContext. -
setPackagesToScan
Set the packages to search for classes with JAXB2 annotations in the classpath. This is using a Spring-bases search and therefore analogous to Spring's component-scan feature (ClassPathBeanDefinitionScanner
).Setting either this property,
"contextPath"
or"classesToBeBound"
is required. -
getPackagesToScan
Return the packages to search for JAXB2 annotations. -
setJaxbContextProperties
Set theJAXBContext
properties. These implementation-specific properties will be set on the underlyingJAXBContext
. -
setMarshallerProperties
Set the JAXBMarshaller
properties.These properties will be set on the underlying JAXB
Marshaller
, and allow for features such as indentation.- Parameters:
properties
- the properties- See Also:
-
setUnmarshallerProperties
Set the JAXBUnmarshaller
properties.These properties will be set on the underlying JAXB
Unmarshaller
.- Parameters:
properties
- the properties- See Also:
-
setMarshallerListener
Specify theMarshaller.Listener
to be registered with the JAXBMarshaller
. -
setUnmarshallerListener
Set theUnmarshaller.Listener
to be registered with the JAXBUnmarshaller
. -
setValidationEventHandler
Set the JAXB validation event handler. This event handler will be called by JAXB if any validation errors are encountered during calls to any of the marshal APIs. -
setAdapters
Specify theXmlAdapter
s to be registered with the JAXBMarshaller
andUnmarshaller
. -
setSchema
Set the schema resource to use for validation. -
setSchemas
Set the schema resources to use for validation. -
setSchemaLanguage
Set the schema language. Default is the W3C XML Schema:http://www.w3.org/2001/XMLSchema"
. -
setSchemaResourceResolver
Set the resource resolver, as used to load the schema resources. -
setLazyInit
public void setLazyInit(boolean lazyInit) Set whether to lazily initialize theJAXBContext
for this marshaller. Default isfalse
to initialize on startup; can be switched totrue
.Early initialization just applies if
afterPropertiesSet()
is called. -
setMtomEnabled
public void setMtomEnabled(boolean mtomEnabled) Specify whether MTOM support should be enabled or not. Default isfalse
: marshalling using XOP/MTOM not being enabled. -
setSupportJaxbElementClass
public void setSupportJaxbElementClass(boolean supportJaxbElementClass) Specify whether thesupports(Class)
returnstrue
for theJAXBElement
class.Default is
false
, meaning thatsupports(Class)
always returnsfalse
forJAXBElement
classes (thoughsupports(Type)
can returntrue
, since it can obtain the type parameters ofJAXBElement
).This property is typically enabled in combination with usage of classes like
MarshallingView
, since theModelAndView
does not offer type parameter information at runtime.- See Also:
-
setCheckForXmlRootElement
public void setCheckForXmlRootElement(boolean checkForXmlRootElement) Specify whether thesupports(Class)
should check for@XmlRootElement
annotations.Default is
true
, meaning thatsupports(Class)
will check for this annotation. However, some JAXB implementations (i.e. EclipseLink MOXy) allow for defining the bindings in an external definition file, thus keeping the classes annotations free. Setting this property tofalse
supports these JAXB implementations.- See Also:
-
setMappedClass
Specify a JAXB mapped class for partial unmarshalling. -
setSupportDtd
public void setSupportDtd(boolean supportDtd) Indicate whether DTD parsing should be supported.Default is
false
meaning that DTD is disabled. -
isSupportDtd
public boolean isSupportDtd()Return whether DTD parsing is supported. -
setProcessExternalEntities
public void setProcessExternalEntities(boolean processExternalEntities) Indicate whether external XML entities are processed when unmarshalling.Default is
false
, meaning that external entities are not resolved. Note that processing of external entities will only be enabled/disabled when theSource
passed tounmarshal(Source)
is aSAXSource
orStreamSource
. It has no effect forDOMSource
orStAXSource
instances.Note: setting this option to
true
also automatically setssetSupportDtd(boolean)
totrue
. -
isProcessExternalEntities
public boolean isProcessExternalEntities()Return whether XML external entities are allowed. -
setBeanClassLoader
Description copied from interface:BeanClassLoaderAware
Callback that supplies the beanclass loader
to a bean instance.Invoked after the population of normal bean properties but before an initialization callback such as
InitializingBean's
InitializingBean.afterPropertiesSet()
method or a custom init-method.- Specified by:
setBeanClassLoader
in interfaceBeanClassLoaderAware
- Parameters:
classLoader
- the owning class loader
-
afterPropertiesSet
Description copied from interface:InitializingBean
Invoked by the containingBeanFactory
after it has set all bean properties and satisfiedBeanFactoryAware
,ApplicationContextAware
etc.This method allows the bean instance to perform validation of its overall configuration and final initialization when all bean properties have been set.
- Specified by:
afterPropertiesSet
in interfaceInitializingBean
- Throws:
Exception
- in the event of misconfiguration (such as failure to set an essential property) or if initialization fails for any other reason
-
getJaxbContext
Return the JAXBContext used by this marshaller, lazily building it if necessary. -
supports
Description copied from interface:Marshaller
Indicate whether this marshaller can marshal instances of the supplied type.- Specified by:
supports
in interfaceMarshaller
- Specified by:
supports
in interfaceUnmarshaller
- Parameters:
clazz
- the class that this marshaller is being asked if it can marshal- Returns:
true
if this marshaller can indeed marshal instances of the supplied class;false
otherwise
-
supports
Description copied from interface:GenericMarshaller
Indicates whether this marshaller can marshal instances of the supplied generic type.- Specified by:
supports
in interfaceGenericMarshaller
- Specified by:
supports
in interfaceGenericUnmarshaller
- Parameters:
genericType
- the type that this marshaller is being asked if it can marshal- Returns:
true
if this marshaller can indeed marshal instances of the supplied type;false
otherwise
-
marshal
Description copied from interface:Marshaller
Marshal the object graph with the given root into the providedResult
.- Specified by:
marshal
in interfaceMarshaller
- Parameters:
graph
- the root of the object graph to marshalresult
- the result to marshal to- Throws:
XmlMappingException
- if the given object cannot be marshalled to the result
-
marshal
public void marshal(Object graph, Result result, @Nullable MimeContainer mimeContainer) throws XmlMappingException Description copied from interface:MimeMarshaller
Marshals the object graph with the given root into the providedResult
, writing binary data to aMimeContainer
.- Specified by:
marshal
in interfaceMimeMarshaller
- Parameters:
graph
- the root of the object graph to marshalresult
- the result to marshal tomimeContainer
- the MIME container to write extracted binary content to- Throws:
XmlMappingException
- if the given object cannot be marshalled to the result
-
createMarshaller
Return a newly created JAXB marshaller.Note: JAXB marshallers are not necessarily thread-safe. This method is public as of 5.2.
- Since:
- 5.2
- See Also:
-
initJaxbMarshaller
Template method that can be overridden by concrete JAXB marshallers for custom initialization behavior. Gets called after creation of JAXBMarshaller
, and after the respective properties have been set.The default implementation sets the
defined properties
, thevalidation event handler
, theschemas
,listener
, andadapters
.- Throws:
JAXBException
-
unmarshal
Description copied from interface:Unmarshaller
Unmarshal the givenSource
into an object graph.- Specified by:
unmarshal
in interfaceUnmarshaller
- Parameters:
source
- the source to marshal from- Returns:
- the object graph
- Throws:
XmlMappingException
- if the given source cannot be mapped to an object
-
unmarshal
public Object unmarshal(Source source, @Nullable MimeContainer mimeContainer) throws XmlMappingException Description copied from interface:MimeUnmarshaller
Unmarshals the given providedSource
into an object graph, reading binary attachments from aMimeContainer
.- Specified by:
unmarshal
in interfaceMimeUnmarshaller
- Parameters:
source
- the source to marshal frommimeContainer
- the MIME container to read extracted binary content from- Returns:
- the object graph
- Throws:
XmlMappingException
- if the given source cannot be mapped to an object
-
createUnmarshaller
Return a newly created JAXB unmarshaller.Note: JAXB unmarshallers are not necessarily thread-safe. This method is public as of 5.2.
- Since:
- 5.2
- See Also:
-
unmarshalStaxSource
protected Object unmarshalStaxSource(Unmarshaller jaxbUnmarshaller, Source staxSource) throws JAXBException - Throws:
JAXBException
-
initJaxbUnmarshaller
Template method that can be overridden by concrete JAXB marshallers for custom initialization behavior. Gets called after creation of JAXBMarshaller
, and after the respective properties have been set.The default implementation sets the
defined properties
, thevalidation event handler
, theschemas
,listener
, andadapters
.- Throws:
JAXBException
-
convertJaxbException
Convert the givenJAXBException
to an appropriate exception from theorg.springframework.oxm
hierarchy.- Parameters:
ex
-JAXBException
that occurred- Returns:
- the corresponding
XmlMappingException
-