public class SimpleConstructorNamespaceHandler 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="author" class="..TestBean" c:name="Enescu" c:work-ref="compositions"/>Here the '
c:name
' corresponds directly to the 'name
' argument declared on the constructor of class 'TestBean
'. The
'c:work-ref
' attributes corresponds to the 'work
'
argument and, rather than being the concrete value, it contains the name of
the bean that will be considered as a parameter.
Note: This implementation supports only named parameters - there is no
support for indexes or types. Further more, the names are used as hints by
the container which, by default, does type introspection.SimplePropertyNamespaceHandler
Constructor and Description |
---|
SimpleConstructorNamespaceHandler() |
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)
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.