org.springframework.data.repository.core.support

## Class TransactionalRepositoryFactoryBeanSupport<T extends Repository<S,ID>,S,ID>

- java.lang.Object
- - org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport<T,S,ID>
  - - org.springframework.data.repository.core.support.TransactionalRepositoryFactoryBeanSupport<T,S,ID>

All Implemented Interfaces:
  Aware, BeanClassLoaderAware, BeanFactoryAware, FactoryBean<T>, InitializingBean, ApplicationEventPublisherAware, RepositoryFactoryInformation<S,ID>

    public abstract class TransactionalRepositoryFactoryBeanSupport<T extends Repository<S,ID>,S,ID>
    extends RepositoryFactoryBeanSupport<T,S,ID>
    implements BeanFactoryAware

Extension of `RepositoryFactoryBeanSupport` to add transactional capabilities to the repository proxy. Will register a `TransactionalRepositoryProxyPostProcessor` that in turn adds a `TransactionInterceptor` to the repository proxy to be created.

Author:
  Oliver Gierke

### Field Summary

### Fields inherited from interface org.springframework.beans.factory.FactoryBean

`OBJECT_TYPE_ATTRIBUTE`

### Constructor Summary

Constructors
`protected` `TransactionalRepositoryFactoryBeanSupport(Class<? extends T> repositoryInterface)` Creates a new `TransactionalRepositoryFactoryBeanSupport` for the given repository interface.

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods
`protected RepositoryFactorySupport` `createRepositoryFactory()` Delegates `RepositoryFactorySupport` creation to `doCreateRepositoryFactory()` and applies the `TransactionalRepositoryProxyPostProcessor` to the created instance.
`protected abstract RepositoryFactorySupport` `doCreateRepositoryFactory()` Creates the actual `RepositoryFactorySupport` instance.
`void` `setBeanFactory(BeanFactory beanFactory)`
`void` `setEnableDefaultTransactions(boolean enableDefaultTransactions)` Configures whether to enable the default transactions configured at the repository base implementation class.
`void` `setTransactionManager(String transactionManager)` Setter to configure which transaction manager to be used.

### Methods inherited from class org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport

`addRepositoryFactoryCustomizer, afterPropertiesSet, createDefaultQueryMethodEvaluationContextProvider, getEntityInformation, getObject, getObjectType, getPersistentEntity, getQueryMethods, getRepositoryInformation, isSingleton, setApplicationEventPublisher, setBeanClassLoader, setCustomImplementation, setEvaluationContextProvider, setLazyInit, setMappingContext, setNamedQueries, setQueryLookupStrategyKey, setRepositoryBaseClass, setRepositoryFragments`

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

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

### Constructor Detail

#### TransactionalRepositoryFactoryBeanSupport

    protected TransactionalRepositoryFactoryBeanSupport(Class<? extends T> repositoryInterface)

Creates a new `TransactionalRepositoryFactoryBeanSupport` for the given repository interface.

Parameters:
  `repositoryInterface` - must not be null.

### Method Detail

#### setTransactionManager

    public void setTransactionManager(String transactionManager)

Setter to configure which transaction manager to be used. We have to use the bean name explicitly as otherwise the qualifier of the `Transactional` annotation is used. By explicitly defining the transaction manager bean name we favour let this one be the default one chosen.

Parameters:
  `transactionManager` -

#### setEnableDefaultTransactions

    public void setEnableDefaultTransactions(boolean enableDefaultTransactions)

Configures whether to enable the default transactions configured at the repository base implementation class.

Parameters:
  `enableDefaultTransactions` - the enableDefaultTransactions to set

#### createRepositoryFactory

    protected final RepositoryFactorySupport createRepositoryFactory()

Delegates `RepositoryFactorySupport` creation to `doCreateRepositoryFactory()` and applies the `TransactionalRepositoryProxyPostProcessor` to the created instance.

Specified by:
  `createRepositoryFactory` in class `RepositoryFactoryBeanSupport<T extends Repository<S,ID>,S,ID>`
Returns:
See Also:
  `#createRepositoryFactory()`

#### doCreateRepositoryFactory

    protected abstract RepositoryFactorySupport doCreateRepositoryFactory()

Creates the actual `RepositoryFactorySupport` instance.

Returns:

#### setBeanFactory

    public void setBeanFactory(BeanFactory beanFactory)

Specified by:
  `setBeanFactory` in interface `BeanFactoryAware`
Overrides:
  `setBeanFactory` in class `RepositoryFactoryBeanSupport<T extends Repository<S,ID>,S,ID>`