public interface BeanDefinitionDecorator
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
org.springframework.aop.framework.ProxyFactoryBean definition allowing for
custom interceptors to be added.
BeanDefinitionDecorators that wish to add an
interceptor to the enclosing bean should extend
org.springframework.aop.config.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.
NamespaceHandler,
BeanDefinitionParser| Modifier and Type | Method and Description |
|---|---|
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. |
BeanDefinitionHolder decorate(Node node, BeanDefinitionHolder definition, ParserContext parserContext)
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.