Class SimpleConstructorNamespaceHandler

java.lang.Object
org.springframework.beans.factory.xml.SimpleConstructorNamespaceHandler
All Implemented Interfaces:
NamespaceHandler

public class SimpleConstructorNamespaceHandler extends Object implements NamespaceHandler
Simple 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. Furthermore, the names are used as hints by the container which, by default, does type introspection.
Since:
3.1
Author:
Costin Leau
See Also:
  • Constructor Details

    • SimpleConstructorNamespaceHandler

      public SimpleConstructorNamespaceHandler()
  • Method Details

    • init

      public void init()
      Description copied from interface: NamespaceHandler
      Invoked by the DefaultBeanDefinitionDocumentReader after construction but before any custom elements are parsed.
      Specified by:
      init in interface NamespaceHandler
      See Also:
    • parse

      @Nullable public BeanDefinition parse(Element element, ParserContext parserContext)
      Description copied from interface: NamespaceHandler
      Parse the specified 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.

      Specified by:
      parse in interface NamespaceHandler
      Parameters:
      element - the element that is to be parsed into one or more BeanDefinitions
      parserContext - the object encapsulating the current state of the parsing process
      Returns:
      the primary BeanDefinition (can be null as explained above)
    • decorate

      public BeanDefinitionHolder decorate(Node node, BeanDefinitionHolder definition, ParserContext parserContext)
      Description copied from interface: NamespaceHandler
      Parse the specified 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.

      Specified by:
      decorate in interface NamespaceHandler
      Parameters:
      node - the source element or attribute that is to be parsed
      definition - the current bean definition
      parserContext - the object encapsulating the current state of the parsing process
      Returns:
      the decorated definition (to be registered in the BeanFactory), or simply the original bean definition if no decoration is required. A null value is strictly speaking invalid, but will be leniently treated like the case where the original bean definition gets returned.