This class is intended to cover the typical case of declarative
transaction demarcation: namely, wrapping a singleton target object with a
transactional proxy, proxying all the interfaces that the target implements.

In contrast to TransactionInterceptor, the transaction attributes are
specified as properties, with method names as keys and transaction attribute
descriptors as values. Method names are always applied to the target class.

Internally, a TransactionInterceptor instance is used, but the user of this
class does not have to care. Optionally, a method pointcut can be specified
to cause conditional invocation of the underlying TransactionInterceptor.

HINT: This class is often used with parent / child bean definitions.
Typically, you will define the transaction manager and default transaction
attributes (for method name patterns) in an abstract parent bean definition,
deriving concrete child bean definitions for specific target objects.
This reduces the per-bean definition effort to a minimum.

setBeanFactory(BeanFactory beanFactory)
This callback is optional: If running in a BeanFactory and no transaction
manager has been set explicitly, a single matching bean of type
PlatformTransactionManager will be fetched from the BeanFactory.

void

setPointcut(Pointcut pointcut)
Set a pointcut, i.e a bean that can cause conditional invocation
of the TransactionInterceptor depending on method and attributes passed.

setTransactionAttributeSource

Set the transaction attribute source which is used to find transaction
attributes. If specifying a String property value, a PropertyEditor
will create a MethodMapTransactionAttributeSource from the value.

setBeanFactory

This callback is optional: If running in a BeanFactory and no transaction
manager has been set explicitly, a single matching bean of type
PlatformTransactionManager will be fetched from the BeanFactory.