org.springframework.aop.config

## Class AbstractInterceptorDrivenBeanDefinitionDecorator

- java.lang.Object
- - org.springframework.aop.config.AbstractInterceptorDrivenBeanDefinitionDecorator

All Implemented Interfaces:
  BeanDefinitionDecorator

    public abstract class AbstractInterceptorDrivenBeanDefinitionDecorator
    extends Object
    implements BeanDefinitionDecorator

Base implementation for `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.

Since:
  2.0
Author:
  Rob Harrop, Juergen Hoeller
See Also:
  `MethodInterceptor`

### Constructor Summary

Constructors
Constructor and Description
`AbstractInterceptorDrivenBeanDefinitionDecorator()`

### Method Summary

Methods
`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)`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### AbstractInterceptorDrivenBeanDefinitionDecorator

    public AbstractInterceptorDrivenBeanDefinitionDecorator()

### Method Detail

#### decorate

    public final BeanDefinitionHolder decorate(Node node,
                                BeanDefinitionHolder definitionHolder,
                                ParserContext parserContext)

Description copied from interface: `BeanDefinitionDecorator`
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.

Specified by:
  `decorate` in interface `BeanDefinitionDecorator`

#### getInterceptorNameSuffix

    protected String getInterceptorNameSuffix(BeanDefinition interceptorDefinition)

#### createInterceptorDefinition

    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.