public abstract class AbstractSingleBeanDefinitionParser extends AbstractBeanDefinitionParser
BeanDefinitionParser
implementations that
need to parse and define just a single BeanDefinition
.
Extend this parser class when you want to create a single bean definition
from an arbitrarily complex XML element. You may wish to consider extending
the AbstractSimpleBeanDefinitionParser
when you want to create a
single bean definition from a relatively simple custom XML element.
The resulting BeanDefinition
will be automatically registered
with the BeanDefinitionRegistry
.
Your job simply is to parse
the custom XML Element
into a single BeanDefinition
.
getBeanClass(org.w3c.dom.Element)
,
getBeanClassName(org.w3c.dom.Element)
,
doParse(org.w3c.dom.Element, org.springframework.beans.factory.xml.ParserContext, org.springframework.beans.factory.support.BeanDefinitionBuilder)
ID_ATTRIBUTE, NAME_ATTRIBUTE
Constructor and Description |
---|
AbstractSingleBeanDefinitionParser() |
Modifier and Type | Method and Description |
---|---|
protected void |
doParse(org.w3c.dom.Element element,
BeanDefinitionBuilder builder)
Parse the supplied
Element and populate the supplied
BeanDefinitionBuilder as required. |
protected void |
doParse(org.w3c.dom.Element element,
ParserContext parserContext,
BeanDefinitionBuilder builder)
Parse the supplied
Element and populate the supplied
BeanDefinitionBuilder as required. |
protected java.lang.Class<?> |
getBeanClass(org.w3c.dom.Element element)
Determine the bean class corresponding to the supplied
Element . |
protected java.lang.String |
getBeanClassName(org.w3c.dom.Element element)
Determine the bean class name corresponding to the supplied
Element . |
protected java.lang.String |
getParentName(org.w3c.dom.Element element)
Determine the name for the parent of the currently parsed bean,
in case of the current bean being defined as a child bean.
|
protected AbstractBeanDefinition |
parseInternal(org.w3c.dom.Element element,
ParserContext parserContext)
Creates a
BeanDefinitionBuilder instance for the
bean Class and passes it to the
doParse(org.w3c.dom.Element, org.springframework.beans.factory.xml.ParserContext, org.springframework.beans.factory.support.BeanDefinitionBuilder) strategy method. |
parse, postProcessComponentDefinition, registerBeanDefinition, resolveId, shouldFireEvents, shouldGenerateId, shouldGenerateIdAsFallback, shouldParseNameAsAliases
protected final AbstractBeanDefinition parseInternal(org.w3c.dom.Element element, ParserContext parserContext)
BeanDefinitionBuilder
instance for the
bean Class
and passes it to the
doParse(org.w3c.dom.Element, org.springframework.beans.factory.xml.ParserContext, org.springframework.beans.factory.support.BeanDefinitionBuilder)
strategy method.parseInternal
in class AbstractBeanDefinitionParser
element
- the element that is to be parsed into a single BeanDefinitionparserContext
- the object encapsulating the current state of the parsing processElement
java.lang.IllegalStateException
- if the bean Class
returned from
getBeanClass(org.w3c.dom.Element)
is null
doParse(org.w3c.dom.Element, org.springframework.beans.factory.xml.ParserContext, org.springframework.beans.factory.support.BeanDefinitionBuilder)
@Nullable protected java.lang.String getParentName(org.w3c.dom.Element element)
The default implementation returns null
,
indicating a root bean definition.
element
- the Element
that is being parsednull
if none@Nullable protected java.lang.Class<?> getBeanClass(org.w3c.dom.Element element)
Element
.
Note that, for application classes, it is generally preferable to
override getBeanClassName(org.w3c.dom.Element)
instead, in order to avoid a direct
dependence on the bean implementation class. The BeanDefinitionParser
and its NamespaceHandler can be used within an IDE plugin then, even
if the application classes are not available on the plugin's classpath.
element
- the Element
that is being parsedClass
of the bean that is being defined via parsing
the supplied Element
, or null
if nonegetBeanClassName(org.w3c.dom.Element)
@Nullable protected java.lang.String getBeanClassName(org.w3c.dom.Element element)
Element
.element
- the Element
that is being parsedElement
, or null
if nonegetBeanClass(org.w3c.dom.Element)
protected void doParse(org.w3c.dom.Element element, ParserContext parserContext, BeanDefinitionBuilder builder)
Element
and populate the supplied
BeanDefinitionBuilder
as required.
The default implementation delegates to the doParse
version without ParserContext argument.
element
- the XML element being parsedparserContext
- the object encapsulating the current state of the parsing processbuilder
- used to define the BeanDefinition
doParse(Element, BeanDefinitionBuilder)
protected void doParse(org.w3c.dom.Element element, BeanDefinitionBuilder builder)
Element
and populate the supplied
BeanDefinitionBuilder
as required.
The default implementation does nothing.
element
- the XML element being parsedbuilder
- used to define the BeanDefinition