rest spring_Spring REST:异常处理卷。 1个

rest spring

目录

  • Spring REST:异常处理卷。 1个
  • Spring REST:异常处理卷。 2
  • Spring REST:异常处理卷。 3

大家好,是时候继续在我的博客中发布新文章了。 因此,我很高兴地宣布,我计划撰写一些技术性的系列文章。 在当前文章中,我将开始讨论Spring REST异常处理。 Spring向我们建议了REST异常处理的几种方法,但是我想将您的注意力集中在其中两种方法上: Spring异常处理

  • @Controller级别的@ExceptionHandler
  • @ControllerAdvice级别的@ExceptionHandler

所有代码示例都将使用我在先前有关REST服务的文章中使用的应用程序开发。 JQuery将在客户端提供与REST服务的交互。

因此,在简要介绍之后,我要进行总结。 我们将考虑REST异常处理程序的三个示例。 这三种情况中的每一种都将描述在任何项目中可能发生的某些实际情况的解决方案。 所有开发将在已经存在的应用程序之上进行。

制备

我想做的第一件事- 将 MessageSource 添加到应用程序中。 这不是很困难,我不想在此停止详细介绍,因为我已经在另一篇文章中解释了如何执行此操作。 MessageSource的目的是存储错误消息,如果抛出异常,我想返回给客户端。

因此,这是一个messages.properties文件:

error.bad.smartphone.id = Smartphone can't have id:

成功添加MessageSource之后,我们可以在@Controller级别继续进行异常处理。

异常处理

在这一段中,我想重点介绍可能发生异常的代码段。 让我们检查来自SmartphoneController的一些方法。

...@RequestMapping(value="/edit/{id}", method=RequestMethod.GET)public ModelAndView editSmartphonePage(@PathVariable int id) {ModelAndView mav = new ModelAndView("phones/edit-phone");Smartphone smartphone = smartphoneService.get(id);mav.addObject("sPhone", smartphone);return mav;}
...@RequestMapping(value="/edit/{id}", method=RequestMethod.PUT, produces = MediaType.APPLICATION_JSON_VALUE,consumes = MediaType.APPLICATION_JSON_VALUE)@ResponseBodypublic Smartphone editSmartphone(@PathVariable int id, @Valid @RequestBody Smartphone smartphone) {smartphone.setId(id);return smartphoneService.update(smartphone);}
...@RequestMapping(value="/delete/{id}", method=RequestMethod.DELETE, produces = MediaType.APPLICATION_JSON_VALUE,consumes = MediaType.APPLICATION_JSON_VALUE)@ResponseBodypublic Smartphone deleteSmartphone(@PathVariable int id) {return smartphoneService.delete(id);}
...

这三种方法具有一个共同的功能– @PathVariable int id 。 这种情况很重要,因为Spring文档说,如果不能将使用@PathVariable注释的方法参数强制转换为指定的类型(在我们的示例中为int),则它将作为String公开。 因此,它可能导致TypeMismatchException

为了解决这个问题,我将在@Controller级别使用@ExceptionHandler批注。 这种方法最适合这种情况。 我只需要在SmartphoneController中进行2处更改:

  • 添加MessageSource字段
  • 添加异常处理程序方法
...@Autowiredprivate MessageSource messageSource;
...@ExceptionHandler(TypeMismatchException.class)@ResponseStatus(value=HttpStatus.NOT_FOUND)@ResponseBodypublic ErrorInfo handleTypeMismatchException(HttpServletRequest req, TypeMismatchException ex) {Locale locale = LocaleContextHolder.getLocale();String errorMessage = messageSource.getMessage("error.bad.smartphone.id", null, locale);errorMessage += ex.getValue();String errorURL = req.getRequestURL().toString();return new ErrorInfo(errorURL, errorMessage);}
...

让我们考虑一下方法。 @ExceptionHandler批注具有参数– TypeMismatchException ,这意味着在发生异常时将触发该方法。 @ResponseStatus批注用于指定特定的响应状态代码。

您可能已经注意到该方法返回ErrorInfo。 这很容易,因为它是任何类型的错误的类,需要通知客户有关错误原因的信息。 因此,该类如下所示:

public class ErrorInfo {private String url;private String message;public ErrorInfo(String url, String message) {this.url = url;this.message = message;}//Getters and setters are omitted}

此类的使用为我们提供了两个主要优点:我们可以提供引起异常的URL,并且可以提供适当的错误消息。

现在,让我们尝试看看当我尝试访问某些ID不可接受的URL时遇到的情况。

Spring异常处理控制器

您可以在屏幕截图上看到,具有错误ID的URL已按照我在@Controller级别上指定的方式进行了处理。 在下一篇文章中,我将讨论一些可以放在@ControllerAdvice级别的异常。

参考: Spring REST:异常处理卷。 Fruzenshtein的笔记博客中来自JCG合作伙伴 Alexey Zvolinskiy的1 。

翻译自: https://www.javacodegeeks.com/2013/12/spring-rest-exception-handling-vol-1.html

rest spring

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/345782.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

英特尔服务器主板型号参数对照表,Intel主板芯片组参数速查表(201805版)

2018年5月6日更新注:以上主板频率是intel的规范,而实际工厂在制造的时候,可以让主板支持到更高的频率,这称为内存频率的OC支持。2016年底,intel200系列芯片组发布了,主要有:Z270、H270、B250三款…

【渝粤题库】国家开放大学2021春1044合同法题目

教育 教育 试卷代号: 1044 2021年春季学期期末统一考试 合同法 试题 2021年7月 注意事项 一、将你的学号、姓名及分校(工作站)名称填写在答题纸的规定栏内。考试结束后,把试卷和答题纸放在桌上。试卷和答题纸均不得带出考场。监…

AWS共享资源的警告

最近,我一直在发布一个新版本,与往常一样,通过将DNS记录切换为指向以前的“备用”组的负载平衡器来利用蓝绿色部署 。 但是在切换DNS之前,我检查了新启动版本的日志并发现了一些奇怪的现象– Web框架(Spring MVC&#…

【渝粤题库】国家开放大学2021春1069中央银行理论与实务答案

教育 教育 试卷代号:1069 2021年春季学期期末统一考试 中央银行理论与实务 试题答案及评分标准 (供参考) 2021年7月 一、单项选择题(在下列各题的备选答案中选择一个正确的,并将其序号字母填入题中的括号里。每小题3…

schur补(schur complement)

1. schur补的定义及性质 2. schur补的应用 2.1 在矩阵方程求解中的应用 2. 概率论和统计学中的应用 https://blog.csdn.net/itnerd/article/details/83385817

oppo r17听筒测试软件,【OPPOR17评测】ColorOS变智能 OPPO R17堪称生活小秘书(全文)_OPPO R17(6GB RAM/全网通)_手机评测-中关村在线...

近两年来,手机的全面屏设计不是美人尖就是刘海屏,这两种设计虽然可以扩大屏占比,但是缺少设计的美感。这时候,OPPO R17终于为我们带来了即有较高的屏占比又优雅的全面屏设计——水滴屏,让摄像头向水滴一样“垂涎欲滴”…

【渝粤题库】国家开放大学2021春1078复变函数题目

教育 教育 试卷代号:1078 2021年春季学期期末统一考试 复变函数 试题 2021年7月 一、单项选择题(本题共20分,每小题4分) 1.若zxiy,则|z|2( ). A.x2-y2 B.y2-x2 C.zz D.x2y2 2.函数f(z) |z|2在( ). A.复平面解析 B.上…

【渝粤题库】国家开放大学2021春1089现代教育思想题目

教育 教育 试卷代号: 1089 2021年春季学期期末统一考试 现代教育思想 试题(开卷) 2021年7月 注意事项 一、将你的学号、姓名及分校(工作站)名称填写在答题纸的规定栏内。考试结束后,把试卷和答题纸放在桌…

图之DFS与BFS的复杂度分析

1. BFS的复杂度分析 vvv为图的顶点数,EEE为边数。 BFS是一种借用队列来存储的过程,分层查找,优先考虑距离出发点近的点。无论是在邻接表还是邻接矩阵中存储,都需要借助一个辅助队列,vvv个顶点均需入队,最坏…

计算机模拟定点突变,分子模拟对接和定点突变提高10β–去乙酰巴卡亭-华南农业大学学报.PDF...

分子模拟对接和定点突变提高10β–去乙酰巴卡亭-华南农业大学学报华南农业大学学报 2018, 39(5): 87-92Journal of South China Agricultural University doi: 10.7671/j.issn.1001-411X.2018.05.013欧阳萍兰, 黄佳俊, 林淑玲, 等. 分子模拟对接和定点突变提高10β–去乙酰巴卡…

【渝粤题库】国家开放大学2021春1121健康教育与健康促进题目

教育 教育 试卷代号: 1121 2021年春季学期期末统一考试 健康教育与健康促进 试题 2021年7月 一、单项选择题(每题2分,共40分) 1.高血压病的家族聚集现象体现了影响健康的( )。 A.生物学因素 B.环境因素 C.生态学因素 D.卫生保健…

【渝粤题库】国家开放大学2021春1018国际公法题目

教育 教育 试卷代号: 1018 2021年春季学期期末统一考试 国际公法 试题 2021年7月 一、单项选择题(每题1分,共10分,每题只有一项答案正确,请将正确答案的序号填在括号内) 1.关于国际法的效力依据问题&…

别克gl8服务器返回数据为空,老司机教学:别克GL8商务车总线控制系统故障解决...

别克GL8(参数|图片)商务车原自动变速箱出现严重故障更换自动变速箱后,不能启动车辆。检查原因,接通电源后档位灯不亮,发动机故障灯亮,防盗指示灯亮,不能启动车辆。用别克车型诊断仪TECH2检查,发现访问不了通过串行数据总线连接传输的各个模块。 检测故障与解决:1、CLASS-2串行数…

【渝粤题库】国家开放大学2021春1021劳动与社会保障法题目

教育 教育 试卷代号: 1021 2021年春季学期期末统一考试 劳动与社会保障法(本) 试题 2021年7月 一、单项选择题(每小题1分,共10分。在每小题的四个备选答案中,选出一个正确的答案,请将正确答案…

spring 注释的作用_Spring的@Primary注释在起作用

spring 注释的作用Spring是一个永不停息的框架。 这是因为它提供了许多不同的解决方案,使我们(开发人员)无需编写数百万行代码即可完成我们的任务。 取而代之的是,我们能够以更具可读性,更标准化的方式进行操作。 在这…

导数与函数极值

http://wuli.wiki//online/DerMax.html

【渝粤题库】国家开放大学2021春1032成本管理题目

教育 教育 试卷代号: 1032 2021年春季学期期末统一考试 成本管理 试题 2021年7月 一、单项选择题(本类题共20分,每小题2分) 1.交互分配法一般在( )分配中使用。 A.直接材料费用 B.辅助生产费用 C.直接工资 D.在产品成本 2.采用品…

5g消息服务器,《5G消息白皮书》内容解读:5G消息是什么服务?

中国移动、中国电信、中国联通联合举行线上发布会,共同发布《5G消息白皮书》。《白皮书》阐述了5G消息的核心理念,明确了相关业务功能及技术需求,提出了对5G消息生态建设的若干构想。据悉,《5G消息白皮书》详细阐述了“5G消息业务…

JDK Bug系统浪费时间

当我在OpenJDK jdk-dev邮件列表中看到Jesper Wilhelmsson的消息标题“ Introducing time浪费者 ”时,想到了消息的可能内容的几种可能性。 在阅读该链接与单击该链接后出现该消息之间的第二个左右时间内 ,我想知道该消息是否与以下主题之一有关&#xff…

驻点、极值点、拐点间的区别和联系

一、极值点与驻点的“纠缠” 我们可以从以下三点去理解它们的区别与联系: 二、拐点和另两者的“牵扯” https://zhuanlan.zhihu.com/p/95782395