您的位置:首页 > 编程语言 > Java开发

SpringMVC异常处理使用@ControllerAdvice注释

2017-08-14 16:39 363 查看
  Spring MVC提供了处理异常和错误的好方法。@ExceptionHandler注释是此功能的核心。对于每个Spring控制器,我们可以简单地定义一个方法,如果给定的异常发生,它将自动调用。例如:

import org.springframework.web.bind.annotation.ExceptionHandler;

//..
@ExceptionHandler(IOException.class)
public String exception(Exception e) {

//..
return "error";
}


  因此,每当从任何控制器方法引发IOException时,将调用上述方法
exception()
。我们使用
@ExceptionHandler
注释将
IOException.class
映射到此方法。

  这个注释的一个缺点是,它只处理从被定义的控制器引发的异常,不会处理从其他控制器引发的异常。

  这个注解用来定义
@ExceptionHandler
@InitBinder
以及
@ModelAttribute
适用于所有
@RequestMapping
方法的方法。

import org.springframework.web.bind.annotation.ControllerAdvice;
//..
@ControllerAdvice
public class ExceptionControllerAdvice {

@ExceptionHandler(Exception.class)
public String exception(Exception e) {

return "error";
}
}


  因此,如果我们在
@ControllerAdvice
类中定义了
@ExceptionHandler
方法的注释,它将被应用于所有控制器。

  值得注意的一点是,Spring配置必须定义mvc命名空间才能识别
@ControllerAdvice
注释。
因此,必须在
spring-servlet.xml
文件中定义以下内容。

  <mvc:annotation-driven/>


  如果已经定义了
<context:annotation-config />
它将不起作用。
@ControllerAdvice
将不会被加载。所以永远记得在Spring配置中使用
<mvc:annotation-driven/>


4000
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: