Class PersistenceExceptionTranslationPostProcessor

All Implemented Interfaces:
Serializable, AopInfrastructureBean, Aware, BeanClassLoaderAware, BeanFactoryAware, BeanPostProcessor, InstantiationAwareBeanPostProcessor, SmartInstantiationAwareBeanPostProcessor, Ordered

public class PersistenceExceptionTranslationPostProcessor extends AbstractBeanFactoryAwareAdvisingPostProcessor
Bean post-processor that automatically applies persistence exception translation to any bean marked with Spring's @Repository annotation, adding a corresponding PersistenceExceptionTranslationAdvisor to the exposed proxy (either an existing AOP proxy or a newly generated proxy that implements all of the target's interfaces).

Translates native resource exceptions to Spring's DataAccessException hierarchy. Autodetects beans that implement the PersistenceExceptionTranslator interface, which are subsequently asked to translate candidate exceptions.

All of Spring's applicable resource factories (e.g. LocalContainerEntityManagerFactoryBean) implement the PersistenceExceptionTranslator interface out of the box. As a consequence, all that is usually needed to enable automatic exception translation is marking all affected beans (such as Repositories or DAOs) with the @Repository annotation, along with defining this post-processor as a bean in the application context.

As of 5.3, PersistenceExceptionTranslator beans will be sorted according to Spring's dependency ordering rules: see Ordered and Order. Note that such beans will get retrieved from any scope, not just singleton scope, as of this 5.3 revision.

Since:
2.0
Author:
Rod Johnson, Juergen Hoeller
See Also:
  • Constructor Details

    • PersistenceExceptionTranslationPostProcessor

      public PersistenceExceptionTranslationPostProcessor()
  • Method Details

    • setRepositoryAnnotationType

      public void setRepositoryAnnotationType(Class<? extends Annotation> repositoryAnnotationType)
      Set the 'repository' annotation type. The default repository annotation type is the Repository annotation.

      This setter property exists so that developers can provide their own (non-Spring-specific) annotation type to indicate that a class has a repository role.

      Parameters:
      repositoryAnnotationType - the desired annotation type
    • setBeanFactory

      public void setBeanFactory(BeanFactory beanFactory)
      Description copied from interface: BeanFactoryAware
      Callback that supplies the owning factory to a bean instance.

      Invoked after the population of normal bean properties but before an initialization callback such as InitializingBean.afterPropertiesSet() or a custom init-method.

      Specified by:
      setBeanFactory in interface BeanFactoryAware
      Overrides:
      setBeanFactory in class AbstractBeanFactoryAwareAdvisingPostProcessor
      Parameters:
      beanFactory - owning BeanFactory (never null). The bean can immediately call methods on the factory.
      See Also: