public abstract class AbstractInterceptorDrivenBeanDefinitionDecorator extends Object implements BeanDefinitionDecorator
BeanDefinitionDecorators
wishing to add an interceptor
to the resulting bean.
This base class controls the creation of the ProxyFactoryBean
bean definition
and wraps the original as an inner-bean definition for the target
property
of ProxyFactoryBean
.
Chaining is correctly handled, ensuring that only one ProxyFactoryBean
definition
is created. If a previous BeanDefinitionDecorator
already created the ProxyFactoryBean
then the
interceptor is simply added to the existing definition.
Subclasses have only to create the BeanDefinition
to the interceptor that
they wish to add.
MethodInterceptor
Constructor and Description |
---|
AbstractInterceptorDrivenBeanDefinitionDecorator() |
Modifier and Type | Method and Description |
---|---|
protected abstract BeanDefinition |
createInterceptorDefinition(Node node)
Subclasses should implement this method to return the
BeanDefinition
for the interceptor they wish to apply to the bean being decorated. |
BeanDefinitionHolder |
decorate(Node node,
BeanDefinitionHolder definitionHolder,
ParserContext parserContext)
Parse the specified
Node (either an element or an attribute) and decorate
the supplied BeanDefinition ,
returning the decorated definition. |
protected String |
getInterceptorNameSuffix(BeanDefinition interceptorDefinition) |
public AbstractInterceptorDrivenBeanDefinitionDecorator()
public final BeanDefinitionHolder decorate(Node node, BeanDefinitionHolder definitionHolder, ParserContext parserContext)
BeanDefinitionDecorator
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.
decorate
in interface BeanDefinitionDecorator
protected String getInterceptorNameSuffix(BeanDefinition interceptorDefinition)
protected abstract BeanDefinition createInterceptorDefinition(Node node)
BeanDefinition
for the interceptor they wish to apply to the bean being decorated.