Seckill-Demo学习笔记:手机号验证与全局异常处理
需积分: 46 97 浏览量
更新于2024-08-05
1
收藏 31KB MD 举报
"商城秒杀项目Seckill-Demo笔记"
这篇笔记主要记录了针对B站乐字节秒杀项目的学习过程,涉及到的关键知识点包括手机号码验证、自定义注解与异常处理,以及SpringBoot的全局异常处理。
### 自定义手机号码验证
在秒杀系统中,用户信息的准确性至关重要,尤其是手机号码,它通常是用户参与活动的主要凭证。这里通过`validatorUtil`工具类实现了手机号码的验证。利用Java的`Pattern`和`Matcher`类,可以创建一个正则表达式来匹配手机号码的格式。例如,正则表达式可以是`^1[3-9]\\d{9}$`,用于检查11位数字且以1开头的手机号。`matches()`方法用于判断输入的字符串是否符合这个正则表达式,返回结果为布尔值。
### 自定义注解`@IsMobile`与`IsMobileValidator`
为了规范业务逻辑,可以通过实现`ConstraintValidator<IsMobile, String>`接口创建一个`IsMobileValidator`类,用于判断输入的`mobile`字段是否为必填且格式正确。`@IsMobile`注解可以被添加到字段或方法参数上,使得在运行时进行验证。这样可以提高代码的可读性和可维护性。
### 异常处理
#### 全局异常处理
在SpringBoot应用中,为了保持代码的整洁和异常处理的一致性,通常会采用全局异常处理机制。这里提到了两种方式:
1. **@ControllerAdvice** - 这种方式只处理控制器中抛出的异常。可以定义多个拦截方法来捕获不同类型的异常,并且可以获取到具体的异常信息,具有较高的灵活性。
2. **@ErrorController** - 这种方式可以捕获任何异常,包括在路由处理之前就发生的错误,如HTTP状态码错误(404、401等)。
这两种方式可以结合使用,@ControllerAdvice处理控制器内部的异常,而@ErrorController则处理更广泛的系统级异常。
### `GlobalException`与`GlobalExceptionHandler`
1. **GlobalException** - 这是一个自定义的运行时异常类,继承自`RuntimeException`。它包含一个`RespBeanEnum`枚举类型,用于指定异常对应的错误信息和状态码。
2. **GlobalExceptionHandler** - 这个类通过`@RestControllerAdvice`注解,声明为全局异常处理器。它包含一个`@ExceptionHandler(Exception.class)`方法,用来捕获所有类型的异常。当异常是`GlobalException`的实例时,可以直接获取到异常信息并封装成响应bean返回给前端。
总结来说,这个笔记记录了秒杀项目中的手机号码验证、自定义注解的使用以及如何优雅地处理各种异常,这些都是构建高可用Web服务的关键技术。通过这些实践,可以提升系统的健壮性和用户体验。
2021-02-25 上传
2021-01-30 上传
2023-09-10 上传
2023-12-08 上传
2023-05-30 上传
2023-04-04 上传
2023-05-09 上传
2023-08-16 上传
MilletopQ
- 粉丝: 3
- 资源: 1
最新资源
- C语言数组操作:高度检查器编程实践
- 基于Swift开发的嘉定单车LBS iOS应用项目解析
- 钗头凤声乐表演的二度创作分析报告
- 分布式数据库特训营全套教程资料
- JavaScript开发者Robert Bindar的博客平台
- MATLAB投影寻踪代码教程及文件解压缩指南
- HTML5拖放实现的RPSLS游戏教程
- HT://Dig引擎接口,Ampoliros开源模块应用
- 全面探测服务器性能与PHP环境的iprober PHP探针v0.024
- 新版提醒应用v2:基于MongoDB的数据存储
- 《我的世界》东方大陆1.12.2材质包深度体验
- Hypercore Promisifier: JavaScript中的回调转换为Promise包装器
- 探索开源项目Artifice:Slyme脚本与技巧游戏
- Matlab机器人学习代码解析与笔记分享
- 查尔默斯大学计算物理作业HP2解析
- GitHub问题管理新工具:GIRA-crx插件介绍