Interface BeanDefinitionDecorator
- All Known Implementing Classes:
AbstractInterceptorDrivenBeanDefinitionDecorator
public interface BeanDefinitionDecorator
Interface used by theDefaultBeanDefinitionDocumentReader
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 manyBeanDefinitions
as required and to transform theBeanDefinition
of the enclosing<bean>
tag, potentially even returning a completely differentBeanDefinition
to replace the original.BeanDefinitionDecorators
should be aware that they may be part of a chain. In particular, aBeanDefinitionDecorator
should be aware that a previousBeanDefinitionDecorator
may have replaced the originalBeanDefinition
with aProxyFactoryBean
definition allowing for custominterceptors
to be added.BeanDefinitionDecorators
that wish to add an interceptor to the enclosing bean should extendAbstractInterceptorDrivenBeanDefinitionDecorator
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 theNamespaceHandler
for the namespace in which the custom tag resides.- Since:
- 2.0
- Author:
- Rob Harrop
- See Also:
NamespaceHandler
,BeanDefinitionParser
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description BeanDefinitionHolder
decorate(Node node, BeanDefinitionHolder definition, ParserContext parserContext)
Parse the specifiedNode
(either an element or an attribute) and decorate the suppliedBeanDefinition
, returning the decorated definition.
Method Detail
decorate
BeanDefinitionHolder decorate(Node node, BeanDefinitionHolder definition, ParserContext parserContext)
Parse the specifiedNode
(either an element or an attribute) and decorate the suppliedBeanDefinition
, 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.