public class SimplePropertyNamespaceHandler extends Object implements NamespaceHandler
NamespaceHandler
implementation that maps custom attributes
directly through to bean properties. An important point to note is that this
NamespaceHandler
does not have a corresponding schema since there
is no way to know in advance all possible attribute names.
An example of the usage of this NamespaceHandler
is shown below:
<bean id="rob" class="..TestBean" p:name="Rob Harrop" p:spouse-ref="sally"/>Here the '
p:name
' corresponds directly to the 'name
'
property on class 'TestBean
'. The 'p:spouse-ref
'
attributes corresponds to the 'spouse
' property and, rather
than being the concrete value, it contains the name of the bean that will
be injected into that property.Constructor and Description |
---|
SimplePropertyNamespaceHandler() |
Modifier and Type | Method and Description |
---|---|
BeanDefinitionHolder |
decorate(Node node,
BeanDefinitionHolder definition,
ParserContext parserContext)
Parse the specified
Node and decorate the supplied
BeanDefinitionHolder , returning the decorated definition. |
void |
init()
Invoked by the
DefaultBeanDefinitionDocumentReader after
construction but before any custom elements are parsed. |
BeanDefinition |
parse(Element element,
ParserContext parserContext)
Parse the specified
Element and register any resulting
BeanDefinitions with the
BeanDefinitionRegistry
that is embedded in the supplied ParserContext . |
public void init()
NamespaceHandler
DefaultBeanDefinitionDocumentReader
after
construction but before any custom elements are parsed.init
in interface NamespaceHandler
NamespaceHandlerSupport.registerBeanDefinitionParser(String, BeanDefinitionParser)
@Nullable public BeanDefinition parse(Element element, ParserContext parserContext)
NamespaceHandler
Element
and register any resulting
BeanDefinitions
with the
BeanDefinitionRegistry
that is embedded in the supplied ParserContext
.
Implementations should return the primary BeanDefinition
that results from the parse phase if they wish to be used nested
inside (for example) a <property>
tag.
Implementations may return null
if they will
not be used in a nested scenario.
parse
in interface NamespaceHandler
element
- the element that is to be parsed into one or more BeanDefinitions
parserContext
- the object encapsulating the current state of the parsing processBeanDefinition
(can be null
as explained above)public BeanDefinitionHolder decorate(Node node, BeanDefinitionHolder definition, ParserContext parserContext)
NamespaceHandler
Node
and decorate the supplied
BeanDefinitionHolder
, returning the decorated definition.
The Node
may be either an Attr
or an
Element
, depending on whether a custom attribute or element
is being parsed.
Implementations may choose to return a completely new definition,
which will replace the original definition in the resulting
BeanFactory
.
The supplied ParserContext
can be used to register any
additional beans needed to support the main definition.
decorate
in interface NamespaceHandler
node
- the source element or attribute that is to be parseddefinition
- the current bean definitionparserContext
- the object encapsulating the current state of the parsing processnull
value is strictly speaking invalid, but will be leniently
treated like the case where the original bean definition gets returned.