## org.springframework.beans.factory.xml
Interface BeanDefinitionDecorator

All Known Implementing Classes:
  AbstractInterceptorDrivenBeanDefinitionDecorator

    public interface BeanDefinitionDecorator

Interface used by the `DefaultBeanDefinitionDocumentReader` to handle custom, nested (directly under a `<bean>`) tags.

Decoration may also occur based on custom attributes applied to the `<bean>` tag. Implementations are free to turn the metadata in the custom tag into as many `BeanDefinitions` as required and to transform the `BeanDefinition` of the enclosing `<bean>` tag, potentially even returning a completely different `BeanDefinition` to replace the original.

`BeanDefinitionDecorators` should be aware that they may be part of a chain. In particular, a `BeanDefinitionDecorator` should be aware that a previous `BeanDefinitionDecorator` may have replaced the original `BeanDefinition` with a `ProxyFactoryBean` definition allowing for custom `interceptors` to be added.

`BeanDefinitionDecorators` that wish to add an interceptor to the enclosing bean should extend `AbstractInterceptorDrivenBeanDefinitionDecorator` which handles the chaining ensuring that only one proxy is created and that it contains all interceptors from the chain.

The parser locates a `BeanDefinitionDecorator` from the `NamespaceHandler` for the namespace in which the custom tag resides.

Since:
  2.0
Author:
  Rob Harrop
See Also:
  `NamespaceHandler`, `BeanDefinitionParser`

Method Summary
`BeanDefinitionHolder` `decorate(Node node, BeanDefinitionHolder definition, ParserContext parserContext)` Parse the specified `Node` (either an element or an attribute) and decorate the supplied `BeanDefinition`, returning the decorated definition.

Method Detail

### decorate

    BeanDefinitionHolder decorate(Node node,
                                  BeanDefinitionHolder definition,
                                  ParserContext parserContext)

  Parse the specified `Node` (either an element or an attribute) and decorate the supplied `BeanDefinition`, returning the decorated definition.

  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.

Copyright © 2002-2008 The Spring Framework.