特定注释方法的Spring引导异常处理

时间:2016-07-07 17:30:52

标签: java spring spring-mvc spring-boot annotations

我们的spring启动控制器具有ajax调用的方法以及渲染CRUD模板的标准方法。我们希望能够使用单个注释来注释所有ajax方法,这样无论抛出什么类型的异常,我们都可以返回ui可以处理的响应。

我一直在查看ControllerAdvice和ExceptionHandler注释,但我不认为它们可以按我们想要的方式使用。 ControllerAdvice只能覆盖整个控制器,因此任何异常处理也会涵盖非ajax方法。类似地,ExceptionHandler注释将处理来自两种方法的异常。

目前的想法是将两种类型的方法ajax和CRUD分成单独的控制器。还有另一种方法吗?

1 个答案:

答案 0 :(得分:0)

我不认为这在Spring中是那么简单/直接(至少对我目前的春天知识而言)。

  

我们希望能够用一个单独注释我们所有的ajax方法   注释

除了将ajaxMethods分离到另一个控制器之外,我还可以想到另一种方法。

1.声明你自己的异常类,如 myAjaxException

2.不要在控制器中处理这个异常,只要在你的ajax方法中遇到任何异常时抛出它。

  try{
         //.... 
      }catch(Exception ex){
          throw new myAjaxException("this is myAjaxException blah blah blah");
      }

3.通过实现HandlerExceptionResolver接受myAjaxException,如下所示。

  

在DispatcherServlet的应用程序中声明的任何Spring bean   将使用实现 HandlerExceptionResolver 的上下文   拦截并处理MVC系统中提出的任何异常   由财务主任处理。

public class AjaxExceptionResolver implements HandlerExceptionResolver {

   public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex);
  if (ex instanceof myAjaxException) {
              //return response to UI
    }

  }