Class PersistenceExceptionTranslationInterceptor

java.lang.Object
org.springframework.dao.support.PersistenceExceptionTranslationInterceptor
All Implemented Interfaces:
Advice, Interceptor, MethodInterceptor, Aware, BeanFactoryAware, InitializingBean

public class PersistenceExceptionTranslationInterceptor extends Object implements MethodInterceptor, BeanFactoryAware, InitializingBean
AOP Alliance MethodInterceptor that provides persistence exception translation based on a given PersistenceExceptionTranslator.

Delegates to the given PersistenceExceptionTranslator to translate a RuntimeException thrown into Spring's DataAccessException hierarchy (if appropriate). If the RuntimeException in question is declared on the target method, it is always propagated as-is (with no translation applied).

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

    • PersistenceExceptionTranslationInterceptor

      public PersistenceExceptionTranslationInterceptor()
      Create a new PersistenceExceptionTranslationInterceptor. Needs to be configured with a PersistenceExceptionTranslator afterwards.
      See Also:
    • PersistenceExceptionTranslationInterceptor

      public PersistenceExceptionTranslationInterceptor(PersistenceExceptionTranslator pet)
      Create a new PersistenceExceptionTranslationInterceptor for the given PersistenceExceptionTranslator.
      Parameters:
      pet - the PersistenceExceptionTranslator to use
    • PersistenceExceptionTranslationInterceptor

      public PersistenceExceptionTranslationInterceptor(ListableBeanFactory beanFactory)
      Create a new PersistenceExceptionTranslationInterceptor, autodetecting PersistenceExceptionTranslators in the given BeanFactory.
      Parameters:
      beanFactory - the ListableBeanFactory to obtaining all PersistenceExceptionTranslators from
  • Method Details

    • setPersistenceExceptionTranslator

      public void setPersistenceExceptionTranslator(PersistenceExceptionTranslator pet)
      Specify the PersistenceExceptionTranslator to use.

      Default is to autodetect all PersistenceExceptionTranslators in the containing BeanFactory, using them in a chain.

      See Also:
    • setAlwaysTranslate

      public void setAlwaysTranslate(boolean alwaysTranslate)
      Specify whether to always translate the exception ("true"), or whether throw the raw exception when declared, i.e. when the originating method signature's exception declarations allow for the raw exception to be thrown ("false").

      Default is "false". Switch this flag to "true" in order to always translate applicable exceptions, independent from the originating method signature.

      Note that the originating method does not have to declare the specific exception. Any base class will do as well, even throws Exception: As long as the originating method does explicitly declare compatible exceptions, the raw exception will be rethrown. If you would like to avoid throwing raw exceptions in any case, switch this flag to "true".

    • setBeanFactory

      public void setBeanFactory(BeanFactory beanFactory) throws BeansException
      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
      Parameters:
      beanFactory - owning BeanFactory (never null). The bean can immediately call methods on the factory.
      Throws:
      BeansException - in case of initialization errors
      See Also:
    • afterPropertiesSet

      public void afterPropertiesSet()
      Description copied from interface: InitializingBean
      Invoked by the containing BeanFactory after it has set all bean properties and satisfied BeanFactoryAware, ApplicationContextAware etc.

      This method allows the bean instance to perform validation of its overall configuration and final initialization when all bean properties have been set.

      Specified by:
      afterPropertiesSet in interface InitializingBean
    • invoke

      @Nullable public Object invoke(MethodInvocation mi) throws Throwable
      Description copied from interface: MethodInterceptor
      Implement this method to perform extra treatments before and after the invocation. Polite implementations would certainly like to invoke Joinpoint.proceed().
      Specified by:
      invoke in interface MethodInterceptor
      Parameters:
      mi - the method invocation joinpoint
      Returns:
      the result of the call to Joinpoint.proceed(); might be intercepted by the interceptor
      Throws:
      Throwable - if the interceptors or the target object throws an exception
    • detectPersistenceExceptionTranslators

      protected PersistenceExceptionTranslator detectPersistenceExceptionTranslators(ListableBeanFactory bf)
      Detect all PersistenceExceptionTranslators in the given BeanFactory.
      Parameters:
      bf - the ListableBeanFactory to obtain PersistenceExceptionTranslators from
      Returns:
      a chained PersistenceExceptionTranslator, combining all PersistenceExceptionTranslators found in the given bean factory
      See Also: