public class FriendlyThrowsAdvice implements ThrowsAdvice {
   public void afterThrowing(ApplicationException ex) throws Throwable {     
      System.out.println(ex.getClass().getName() + "例外が発生しました。[" + ex.getMessage() + "]");
      throw ex;
   }

   public void afterThrowing(Method m, Object[] args, Object target, DataIntegrityViolationException ex)
      throws Throwable {     
      DuplicateKeyException exception = new DuplicateKeyException("すでに登録済みです。", ex);
      System.out.println(target.getClass() + "." + m.getName() + "でデータアクセス例外が発生しました。["
     + exception.getMessage() + "]");
      throw exception;
   }
}