博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring MVC中@ControllerAdvice注解实现全局异常拦截
阅读量:6509 次
发布时间:2019-06-24

本文共 1871 字,大约阅读时间需要 6 分钟。

在网上很多都把Advice翻译成增强器,其实从翻译工具上看到,这个单词翻译是忠告,通知的意思。

首先这个注解实在Spring Web包下,而Spring MVC离不开Spring Web的依赖,所以经常两个一起使用的。

题外:如果在asp.net webform下可以做这样的事情有两处地方,全部集成Base或者Globals去拦截,而在asp.net webmvc下提供了指定类进行注入,Globals同样也有,并且可以实现,但提倡这个,mvc已经有了新的类实现全局,以上是dotnet的等等。

@ControllerAdvice的做可以可以全局拦截指定的异常,并做想要的包装处理,比如跳转到别的页面,或者返回指定的数据格式等等。

下面是通过这个特定实现的简单拦截:

1、新建MyControllerAdvice类

package com.jsoft.springboottest.springboottest1.controller;import org.springframework.ui.Model;import org.springframework.web.bind.WebDataBinder;import org.springframework.web.bind.annotation.*;import org.springframework.web.context.request.NativeWebRequest;import java.util.HashMap;import java.util.Map;/** * Controller增强器 * * @author jim * @date 2017/11/23 */@ControllerAdvicepublic class MyControllerAdvice {    @ModelAttribute    public void changeModel(Model model) {        System.out.println("============应用到所有@RequestMapping注解方法,在其执行之前把返回值放入Model");        model.addAttribute("author", "Jim");    }    @InitBinder    public void initBinder(WebDataBinder binder) {        System.out.println("============应用到所有@RequestMapping注解方法,在其执行之前初始化数据绑定器");    }    /**     * 设置要捕获的异常,并作出处理     * 注意:这里可以返回试图,也可以放回JSON,这里就当做一个Controller使用     *     * @param request {
@link NativeWebRequest} * @param e {
@link Exception} * @return {
@link Map} */ @ExceptionHandler(value = Exception.class) @ResponseBody public Map processUnauthenticatedException(NativeWebRequest request, Exception e) { System.out.println("===========应用到所有@RequestMapping注解的方法,在其抛出Exception异常时执行"); Map map = new HashMap(5); map.put("code", 404); map.put("msg", e.getMessage()); return map; }}

2、测试异常,模拟抛出异常

@RequestMapping("/show")    public String show() throws Exception {        throw new Exception("测试异常");    }

测试效果:

测试工程:

 

参考:

==>如有问题,请联系我:easonjim#163.com,或者下方发表评论。<==

转载地址:http://mjdfo.baihongyu.com/

你可能感兴趣的文章
数据库设计 Step by Step (6) —— 提取业务规则
查看>>
深入理解java异常处理机制
查看>>
Redis客户端redisson实战
查看>>
连接到 JasperReports Server
查看>>
java处理高并发高负载类网站问题
查看>>
使用C#生成随机密码(纯数字或字母)和随机卡号(数字与字母组合)
查看>>
CAS服务器端集群
查看>>
Android内存泄漏的常见场景及解决方案
查看>>
设计模式 之 访问者模式
查看>>
JAVA Collections框架
查看>>
更改Windwos server 2003 域用户密码策略默认配置
查看>>
进制转换
查看>>
反转字符串中的单词
查看>>
html与html5的一些区别
查看>>
ASCII码
查看>>
java常用四种排序源代码
查看>>
win7 下硬盘安装Redhat7
查看>>
Redis 分布式锁的正确实现方式
查看>>
mysqldump 备份命令使用中的一些经验总结
查看>>
Linux下MySql安装配置方法总结
查看>>