Class XmlBeanDefinitionReader
- All Implemented Interfaces:
BeanDefinitionReader
,EnvironmentCapable
BeanDefinitionDocumentReader
interface.
Typically applied to a
DefaultListableBeanFactory
or a GenericApplicationContext
.
This class loads a DOM document and applies the BeanDefinitionDocumentReader to it.
The document reader will register each bean definition with the given bean factory,
talking to the latter's implementation of the
BeanDefinitionRegistry
interface.
- Since:
- 26.11.2003
- Author:
- Juergen Hoeller, Rob Harrop, Chris Beams
- See Also:
-
Field Summary
Modifier and TypeFieldDescriptionstatic final int
Indicates that the validation mode should be detected automatically.static final int
Indicates that DTD validation should be used.static final int
Indicates that the validation should be disabled.static final int
Indicates that XSD validation should be used.Fields inherited from class org.springframework.beans.factory.support.AbstractBeanDefinitionReader
logger
-
Constructor Summary
ConstructorDescriptionCreate new XmlBeanDefinitionReader for the given bean factory. -
Method Summary
Modifier and TypeMethodDescriptionprotected BeanDefinitionDocumentReader
Create theBeanDefinitionDocumentReader
to use for actually reading bean definitions from an XML document.protected NamespaceHandlerResolver
Create the default implementation ofNamespaceHandlerResolver
used if none is specified.createReaderContext
(Resource resource) Create theXmlReaderContext
to pass over to the document reader.protected int
detectValidationMode
(Resource resource) Detect which kind of validation to perform on the XML file identified by the suppliedResource
.protected int
doLoadBeanDefinitions
(InputSource inputSource, Resource resource) Actually load bean definitions from the specified XML file.protected Document
doLoadDocument
(InputSource inputSource, Resource resource) Actually load the specified document using the configured DocumentLoader.protected EntityResolver
Return the EntityResolver to use, building a default resolver if none specified.Lazily create a default NamespaceHandlerResolver, if not set before.int
Return the validation mode to use.protected int
getValidationModeForResource
(Resource resource) Determine the validation mode for the specifiedResource
.boolean
Return whether or not the XML parser should be XML namespace aware.int
loadBeanDefinitions
(Resource resource) Load bean definitions from the specified XML file.int
loadBeanDefinitions
(EncodedResource encodedResource) Load bean definitions from the specified XML file.int
loadBeanDefinitions
(InputSource inputSource) Load bean definitions from the specified XML file.int
loadBeanDefinitions
(InputSource inputSource, String resourceDescription) Load bean definitions from the specified XML file.int
registerBeanDefinitions
(Document doc, Resource resource) Register the bean definitions contained in the given DOM document.void
setDocumentLoader
(DocumentLoader documentLoader) Specify theDocumentLoader
to use.void
setDocumentReaderClass
(Class<? extends BeanDefinitionDocumentReader> documentReaderClass) Specify theBeanDefinitionDocumentReader
implementation to use, responsible for the actual reading of the XML bean definition document.void
setEntityResolver
(EntityResolver entityResolver) Set a SAX entity resolver to be used for parsing.void
setErrorHandler
(ErrorHandler errorHandler) Set an implementation of theorg.xml.sax.ErrorHandler
interface for custom handling of XML parsing errors and warnings.void
setEventListener
(ReaderEventListener eventListener) Specify whichReaderEventListener
to use.void
setNamespaceAware
(boolean namespaceAware) Set whether or not the XML parser should be XML namespace aware.void
setNamespaceHandlerResolver
(NamespaceHandlerResolver namespaceHandlerResolver) Specify theNamespaceHandlerResolver
to use.void
setProblemReporter
(ProblemReporter problemReporter) Specify whichProblemReporter
to use.void
setSourceExtractor
(SourceExtractor sourceExtractor) Specify theSourceExtractor
to use.void
setValidating
(boolean validating) Set whether to use XML validation.void
setValidationMode
(int validationMode) Set the validation mode to use.void
setValidationModeName
(String validationModeName) Set the validation mode to use by name.Methods inherited from class org.springframework.beans.factory.support.AbstractBeanDefinitionReader
getBeanClassLoader, getBeanNameGenerator, getEnvironment, getRegistry, getResourceLoader, loadBeanDefinitions, loadBeanDefinitions, loadBeanDefinitions, loadBeanDefinitions, setBeanClassLoader, setBeanNameGenerator, setEnvironment, setResourceLoader
-
Field Details
-
VALIDATION_NONE
public static final int VALIDATION_NONEIndicates that the validation should be disabled.- See Also:
-
VALIDATION_AUTO
public static final int VALIDATION_AUTOIndicates that the validation mode should be detected automatically.- See Also:
-
VALIDATION_DTD
public static final int VALIDATION_DTDIndicates that DTD validation should be used.- See Also:
-
VALIDATION_XSD
public static final int VALIDATION_XSDIndicates that XSD validation should be used.- See Also:
-
-
Constructor Details
-
XmlBeanDefinitionReader
Create new XmlBeanDefinitionReader for the given bean factory.- Parameters:
registry
- the BeanFactory to load bean definitions into, in the form of a BeanDefinitionRegistry
-
-
Method Details
-
setValidating
public void setValidating(boolean validating) Set whether to use XML validation. Default istrue
.This method switches namespace awareness on if validation is turned off, in order to still process schema namespaces properly in such a scenario.
-
setValidationModeName
Set the validation mode to use by name. Defaults toVALIDATION_AUTO
.- See Also:
-
setValidationMode
public void setValidationMode(int validationMode) Set the validation mode to use. Defaults toVALIDATION_AUTO
.Note that this only activates or deactivates validation itself. If you are switching validation off for schema files, you might need to activate schema namespace support explicitly: see
setNamespaceAware(boolean)
. -
getValidationMode
public int getValidationMode()Return the validation mode to use. -
setNamespaceAware
public void setNamespaceAware(boolean namespaceAware) Set whether or not the XML parser should be XML namespace aware. Default is "false".This is typically not needed when schema validation is active. However, without validation, this has to be switched to "true" in order to properly process schema namespaces.
-
isNamespaceAware
public boolean isNamespaceAware()Return whether or not the XML parser should be XML namespace aware. -
setProblemReporter
Specify whichProblemReporter
to use.The default implementation is
FailFastProblemReporter
which exhibits fail fast behaviour. External tools can provide an alternative implementation that collates errors and warnings for display in the tool UI. -
setEventListener
Specify whichReaderEventListener
to use.The default implementation is EmptyReaderEventListener which discards every event notification. External tools can provide an alternative implementation to monitor the components being registered in the BeanFactory.
-
setSourceExtractor
Specify theSourceExtractor
to use.The default implementation is
NullSourceExtractor
which simply returnsnull
as the source object. This means that - during normal runtime execution - no additional source metadata is attached to the bean configuration metadata. -
setNamespaceHandlerResolver
public void setNamespaceHandlerResolver(@Nullable NamespaceHandlerResolver namespaceHandlerResolver) Specify theNamespaceHandlerResolver
to use.If none is specified, a default instance will be created through
createDefaultNamespaceHandlerResolver()
. -
setDocumentLoader
Specify theDocumentLoader
to use.The default implementation is
DefaultDocumentLoader
which loadsDocument
instances using JAXP. -
setEntityResolver
Set a SAX entity resolver to be used for parsing.By default,
ResourceEntityResolver
will be used. Can be overridden for custom entity resolution, for example relative to some specific base path. -
getEntityResolver
Return the EntityResolver to use, building a default resolver if none specified. -
setErrorHandler
Set an implementation of theorg.xml.sax.ErrorHandler
interface for custom handling of XML parsing errors and warnings.If not set, a default SimpleSaxErrorHandler is used that simply logs warnings using the logger instance of the view class, and rethrows errors to discontinue the XML transformation.
- See Also:
-
setDocumentReaderClass
public void setDocumentReaderClass(Class<? extends BeanDefinitionDocumentReader> documentReaderClass) Specify theBeanDefinitionDocumentReader
implementation to use, responsible for the actual reading of the XML bean definition document.The default is
DefaultBeanDefinitionDocumentReader
.- Parameters:
documentReaderClass
- the desired BeanDefinitionDocumentReader implementation class
-
loadBeanDefinitions
Load bean definitions from the specified XML file.- Parameters:
resource
- the resource descriptor for the XML file- Returns:
- the number of bean definitions found
- Throws:
BeanDefinitionStoreException
- in case of loading or parsing errors
-
loadBeanDefinitions
Load bean definitions from the specified XML file.- Parameters:
encodedResource
- the resource descriptor for the XML file, allowing to specify an encoding to use for parsing the file- Returns:
- the number of bean definitions found
- Throws:
BeanDefinitionStoreException
- in case of loading or parsing errors
-
loadBeanDefinitions
Load bean definitions from the specified XML file.- Parameters:
inputSource
- the SAX InputSource to read from- Returns:
- the number of bean definitions found
- Throws:
BeanDefinitionStoreException
- in case of loading or parsing errors
-
loadBeanDefinitions
public int loadBeanDefinitions(InputSource inputSource, @Nullable String resourceDescription) throws BeanDefinitionStoreException Load bean definitions from the specified XML file.- Parameters:
inputSource
- the SAX InputSource to read fromresourceDescription
- a description of the resource (can benull
or empty)- Returns:
- the number of bean definitions found
- Throws:
BeanDefinitionStoreException
- in case of loading or parsing errors
-
doLoadBeanDefinitions
protected int doLoadBeanDefinitions(InputSource inputSource, Resource resource) throws BeanDefinitionStoreException Actually load bean definitions from the specified XML file.- Parameters:
inputSource
- the SAX InputSource to read fromresource
- the resource descriptor for the XML file- Returns:
- the number of bean definitions found
- Throws:
BeanDefinitionStoreException
- in case of loading or parsing errors- See Also:
-
doLoadDocument
Actually load the specified document using the configured DocumentLoader.- Parameters:
inputSource
- the SAX InputSource to read fromresource
- the resource descriptor for the XML file- Returns:
- the DOM Document
- Throws:
Exception
- when thrown from the DocumentLoader- See Also:
-
getValidationModeForResource
Determine the validation mode for the specifiedResource
. If no explicit validation mode has been configured, then the validation mode getsdetected
from the given resource.Override this method if you would like full control over the validation mode, even when something other than
VALIDATION_AUTO
was set. -
detectValidationMode
Detect which kind of validation to perform on the XML file identified by the suppliedResource
. If the file has aDOCTYPE
definition then DTD validation is used otherwise XSD validation is assumed.Override this method if you would like to customize resolution of the
VALIDATION_AUTO
mode. -
registerBeanDefinitions
public int registerBeanDefinitions(Document doc, Resource resource) throws BeanDefinitionStoreException Register the bean definitions contained in the given DOM document. Called byloadBeanDefinitions
.Creates a new instance of the parser class and invokes
registerBeanDefinitions
on it.- Parameters:
doc
- the DOM documentresource
- the resource descriptor (for context information)- Returns:
- the number of bean definitions found
- Throws:
BeanDefinitionStoreException
- in case of parsing errors- See Also:
-
loadBeanDefinitions(org.springframework.core.io.Resource)
setDocumentReaderClass(java.lang.Class<? extends org.springframework.beans.factory.xml.BeanDefinitionDocumentReader>)
BeanDefinitionDocumentReader.registerBeanDefinitions(org.w3c.dom.Document, org.springframework.beans.factory.xml.XmlReaderContext)
-
createBeanDefinitionDocumentReader
Create theBeanDefinitionDocumentReader
to use for actually reading bean definitions from an XML document.The default implementation instantiates the specified "documentReaderClass".
-
createReaderContext
Create theXmlReaderContext
to pass over to the document reader. -
getNamespaceHandlerResolver
Lazily create a default NamespaceHandlerResolver, if not set before.- See Also:
-
createDefaultNamespaceHandlerResolver
Create the default implementation ofNamespaceHandlerResolver
used if none is specified.The default implementation returns an instance of
DefaultNamespaceHandlerResolver
.
-