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)
BeanDefinitionDecoratorNode (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 BeanDefinitionDecoratorprotected String getInterceptorNameSuffix(BeanDefinition interceptorDefinition)
protected abstract BeanDefinition createInterceptorDefinition(Node node)
BeanDefinition
for the interceptor they wish to apply to the bean being decorated.