`
m635674608
  • 浏览: 5026341 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

spring mvc统一异常处理(@ControllerAdvice + @ExceptionHandler)

阅读更多

spring 封装了非常强大的异常处理机制。本文选取@ControllerAdvice + @ExceptionHandler 这种零配置(全注解),作为异常处理解决方案!

 

@ControllerAdvice,是spring3.2提供的新注解,从名字上可以看出大体意思是控制器增强。让我们先看看@ControllerAdvice的实现:

1
2
3
4
5
@Target(value=TYPE)
@Retention(value=RUNTIME)
@Documented
@Component
public @interface ControllerAdvice
 
(spring 官方解释)

即把@ControllerAdvice注解内部使用@ExceptionHandler、@InitBinder、@ModelAttribute注解的方法应用到所有的 @RequestMapping注解的方法。非常简单,不过只有当使用@ExceptionHandler最有用,另外两个用处不大。

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@ControllerAdvice
public class ControllerExceptionHanler {
    private static Logger logger = LoggerFactory.getLogger(ControllerExceptionHanler.class);
     
    @ExceptionHandler(value=ApplicationRuntimeException.class)
    public ResponseEntity<String> handleServiceException(Exception exception, HttpServletRequest request) {
        return new ResponseEntity<String>(exception.getMessage(), HttpStatus.BAD_REQUEST);
    }
     
    @ExceptionHandler(value=Exception.class)
    @ResponseStatus(value=HttpStatus.INTERNAL_SERVER_ERROR)
    public ResponseEntity<String> handleException(Exception exception, HttpServletRequest request) {
        logger.error("系统异常!", exception);
        return new ResponseEntity<String>("操作失败,请联系管理员!", HttpStatus.INTERNAL_SERVER_ERROR);
    }
}

  即把@ControllerAdvice注解内部使用@ExceptionHandler、@InitBinder、@ModelAttribute注解的方法应用到所有的 @RequestMapping注解的方法。非常简单,不过只有当使用@ExceptionHandler最有用,另外两个用处不大。

 

 

接下来看段代码:

 

Java代码  收藏代码
  1. @ControllerAdvice  
  2. public class ControllerAdviceTest {  
  3.   
  4.     @ModelAttribute  
  5.     public User newUser() {  
  6.         System.out.println("============应用到所有@RequestMapping注解方法,在其执行之前把返回值放入Model");  
  7.         return new User();  
  8.     }  
  9.   
  10.     @InitBinder  
  11.     public void initBinder(WebDataBinder binder) {  
  12.         System.out.println("============应用到所有@RequestMapping注解方法,在其执行之前初始化数据绑定器");  
  13.     }  
  14.   
  15.     @ExceptionHandler(UnauthenticatedException.class)  
  16.     @ResponseStatus(HttpStatus.UNAUTHORIZED)  
  17.     public String processUnauthenticatedException(NativeWebRequest request, UnauthenticatedException e) {  
  18.         System.out.println("===========应用到所有@RequestMapping注解的方法,在其抛出UnauthenticatedException异常时执行");  
  19.         return "viewName"//返回一个逻辑视图名  
  20.     }  
  21. }  

这样可以全局的管理项目的异常现象,避免的错误信息直接显示到页面的尴尬。

参考:

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/ControllerAdvice.html

 

 

https://www.cnblogs.com/chihirotan/p/5990742.html

分享到:
评论

相关推荐

    spring mvc统一处理异常

    spring mvc统一处理异常,通过@ControllerAdvice+@ExceptionHandler

    ControllerAdvice spring mvc 3.2 错误统一控制

    通过`@ExceptionHandler`标注的方法`handleException`,我们可以定义当发生异常时,如何处理异常并返回对应的视图。 具体到给出的内容: ```jsp jsp/error.jsp &lt;%@taglib prefix="spring" uri="***"%&gt; ${message}...

    spring mvc异常简单处理

    确保正确配置这些依赖,是构建一个能够正常处理异常的Spring MVC项目的基础。 在`src`目录下,可能包含了Java源代码、配置文件等。通常,异常处理相关的类会放在`com.example.yourpackage.controller.advice`这样的...

    spring mvc异常处理

    Spring MVC 提供了一种统一的方式来处理应用程序中抛出的异常。它通过`@ExceptionHandler`注解、`@ControllerAdvice`注解和`HandlerExceptionResolver`接口来实现这一目标,使得我们可以定制化错误页面,提供友好的...

    spring mvc 4.0

    11. **错误处理**:通过@ControllerAdvice和@ExceptionHandler,可以全局处理异常,提供统一的错误页面或API响应。 12. **整合WebSocket**:Spring MVC 4.0开始支持WebSocket协议,允许实现实时通信,如聊天应用、...

    spring2.0MVC+spring2.5MVC+portletMVC

    5. **异常处理**:Spring 2.0提供了@ControllerAdvice和@ExceptionHandler注解,使得全局异常处理更加简洁和高效。 接下来,Spring 2.5进一步扩展了这些特性,包括: 1. **@RequestMapping**:这是一个关键注解,...

    springmvc 异常统一处理的三种方式详解.docx

    本篇文章将详细探讨Spring MVC处理异常的三种主要方法:SimpleMappingExceptionResolver、自定义HandlerExceptionResolver以及@ExceptionHandler注解。 1. SimpleMappingExceptionResolver Spring MVC提供了内置的...

    最全最经典spring-mvc教程

    错误处理和异常处理也是Spring MVC中的重要部分,通过@ControllerAdvice和@ExceptionHandler可以全局处理异常,提供统一的错误页面。 最后,测试是任何应用程序开发的重要环节。Spring MVC提供了MockMVC,可以在不...

    spring mvc + mybitis + mysql集成例子,带数据库

    7. **错误和异常处理**:使用Spring的@ControllerAdvice和@ExceptionHandler注解可以全局处理错误和异常,提高用户体验。 通过这个集成例子,开发者可以学习到如何将这三个组件有效地整合在一起,创建一个功能完善...

    springMVCDemo+maven

    - 可以通过@ControllerAdvice 和 @ExceptionHandler 注解进行全局异常处理,提高代码的健壮性。 11. **视图技术** - Spring MVC 兼容多种视图技术,如 JSP、Freemarker、Thymeleaf 等,可以根据项目需求选择合适...

    最全的Spring MVC注解例子,异步请求,错误处理

    - `@ControllerAdvice`:这是一个全局的异常处理注解,它可以跨越多个控制器,统一处理异常。 - `@ResponseStatus`:用于设置HTTP状态码,配合`@ExceptionHandler`一起使用,可以自定义错误响应的状态码。 - `...

    SpringMVC异常处理知识点总结

    SpringMVC 异常处理是 Spring MVC 框架中的一个重要机制,通过使用 @ExceptionHandler 注解和 @ControllerAdvice 注解,可以实现统一的异常处理机制。在实际开发中,需要根据不同的业务需求来设计和实现异常处理机制...

    Spring MVC 使用注解的示例讲解

    Spring MVC允许我们使用@ControllerAdvice和@ExceptionHandler注解定义全局的异常处理器。这样,任何Controller中抛出的异常都可以被统一捕获和处理。 6. **验证** 使用JSR-303/JSR-349提供的@NotNull、@Size等...

    Spring MVC与MYBatis企业应用实战.pdf

    - 异常处理:通过@ControllerAdvice和@ExceptionHandler全局处理异常。 - 单元测试:使用JUnit和Mockito测试Controller、Service和DAO层的功能。 总之,《Spring MVC与MYBatis企业应用实战》将引导读者深入理解这...

    Spring MVC中异常处理的三种方式

    Spring MVC 框架为我们提供了三种方式来处理异常,分别是实现 HandlerExceptionResolver、使用 @ControllerAdvice 和 @ExceptionHandler 注解、使用 ErrorController。下面我们将详细介绍这三种方式。 1. 实现 ...

    精通Spring MVC4

    Spring MVC提供了一种优雅的异常处理机制,可以使用@ControllerAdvice和@ExceptionHandler注解定义全局异常处理器。此外,还可以自定义错误页面,提高用户体验。 8. **数据绑定和验证** Spring MVC支持自动的数据...

    spring MVC_快速入门

    可以使用@ControllerAdvice和@ExceptionHandler全局处理异常,为整个应用提供统一的错误页面或提示。 8. **拦截器(Interceptor)** 拦截器允许在请求处理前后执行自定义逻辑,比如登录检查、日志记录等。通过...

    spring mvc 整合包

    13. **异常处理**:通过@ControllerAdvice和@ExceptionHandler注解,可以全局处理异常,提供统一的错误页面。 14. **RESTful风格**:Spring MVC支持创建RESTful API,通过HTTP方法(GET、POST、PUT、DELETE等)和...

    Mastering Spring MVC 3中文版

    6. **异常处理**:通过@ControllerAdvice和@ExceptionHandler注解实现全局异常处理。 7. **拦截器**:自定义Interceptor,实现请求前后的预处理和后处理,如权限控制、日志记录等。 8. **RESTful支持**:通过@...

    spring mvc

    13. **异常处理**: 通过@ControllerAdvice和@ExceptionHandler,可以全局捕获并处理应用程序中的异常,提供统一的错误页面或JSON响应。 14. **Internationalization (i18n) & Localization (l10n)**: Spring MVC ...

Global site tag (gtag.js) - Google Analytics