目录

一、使用@Valid表单验证

二、使用AOP处理请求

三、统一异常处理

四、单元测试

前提:该教程是在SpringBoot入门基础学习(https://blog.csdn.net/qq_28135179/article/details/80685924)之上讲解的,若有疑问可先学习查看SpringBoot入门基础学习内容。

一、使用@Valid表单验证


1、需求:禁止未成年人注册(添加一个学生)

在类中需要验证的属性添加验证@Min表示最小值

SpringBoot入门基础学习(二)

在方法类参数前添加@Valid验证注解,BindingResult是验证结果,bindingResult.hasErrors表示是否有错误,bindingResult.getFieldError.getDefaultMessage()表示验证后的错误信息

SpringBoot入门基础学习(二)


便于于看到效果,我们先清除数据库中的数据

SpringBoot入门基础学习(二)

我们用Postmen测试,先新增一个符合条件的学生

SpringBoot入门基础学习(二)

数据库新增成功

SpringBoot入门基础学习(二)

添加一条不符合验证的数据

SpringBoot入门基础学习(二)

添加失败,控制台打印出错误信息

SpringBoot入门基础学习(二)

二、AOP统一处理请求日志

APO(面向切面)是一种编程范式,与语音无关,是一种程序设计思想。除了AOP我们听过OOP(面向对象)、POP(面向过程)

一个网络请求的生命周期:收到HttpReqeust请求--->记录请求--->处理网络请求--->生成HttpResponse--->记录回复

操作数据库的生命周期:收到数据库操作请求--->记录请求--->增删查改--->生成处理结果--->记录回复

在上面两个生命周期中,可以分为三步1-2是请求、3-4是业务逻辑处理、5是回复 

1、@Before运行方法前拦截操作

第一步:在pom文件中添加依赖

SpringBoot入门基础学习(二)

第二步:创建处理文件@Component引入Spring容器,@Before中填写需要拦截的方法名或整个类,log()方法中处理这些拦截下来的请求。

SpringBoot入门基础学习(二)

我们用Postmen访问

SpringBoot入门基础学习(二)

控制台打印拦截信息

SpringBoot入门基础学习(二)

如果我们想拦截整个类中的所有方法可以

SpringBoot入门基础学习(二)

2、@After运行方法后拦截操作

SpringBoot入门基础学习(二)

SpringBoot入门基础学习(二)

Postmen中测试

SpringBoot入门基础学习(二)

控制台打印

SpringBoot入门基础学习(二)

在上面代码中,我们又写了很多重复的代码,在开发是我们应该避免写重复的代码,这样后期维护比较容易

SpringBoot入门基础学习(二)

解决方法:@Pointcut()提取公共部分

SpringBoot入门基础学习(二)

使用Logger打印日志

SpringBoot入门基础学习(二)

控制台打印

SpringBoot入门基础学习(二)

3、记录每个http请求

SpringBoot入门基础学习(二)

Postmen测试

SpringBoot入门基础学习(二)

控制台打印日志

SpringBoot入门基础学习(二)

4、获取请求返回的内容

SpringBoot入门基础学习(二)

由于返回的是一个对象,在类中添加toString方法可看到具体的参数值

SpringBoot入门基础学习(二)

Postmen测试

SpringBoot入门基础学习(二)

控制台打印

SpringBoot入门基础学习(二)

三、统一异常处理

1、统一返回

前面我们在做表单验证的时候,添加一个学生信息,学生年龄必须要大于18岁,在我们处理返回数据时如果满足条件返回时一个对象,如果不符合条件,返回的是提示语句,这样返回没有统一的格式,比较乱,下面我们做一个统一的返回。

SpringBoot入门基础学习(二)

先写一个公共请求返回类,添加get\set方法

SpringBoot入门基础学习(二)

添加统一放回方法

SpringBoot入门基础学习(二)

原来的新增方法

SpringBoot入门基础学习(二)

修改后

SpringBoot入门基础学习(二)

Postmen测试

成功

SpringBoot入门基础学习(二)

失败

SpringBoot入门基础学习(二)

2、假设我们查询年龄小于10和10-16的学生是异常的

SpringBoot入门基础学习(二)

SpringBoot入门基础学习(二)

Postman测试

SpringBoot入门基础学习(二)

打印的格式,与我们定义的格式不同,则需要建一个捕获异常

SpringBoot入门基础学习(二)

Postman测试

SpringBoot入门基础学习(二)

上边的测试中,我们的code是固定的,我们想要code灵活使用,则需要自定义异常

定义异常,继承RuntimeException可以事务回滚,而继承Exception是不能事务回滚的

SpringBoot入门基础学习(二)

SpringBoot入门基础学习(二)

SpringBoot入门基础学习(二)

Postmen测试

SpringBoot入门基础学习(二)

现在异常只会显示我们定义的异常信息,如果我们想打印系统异常所有信息,可以打印异常日志

SpringBoot入门基础学习(二)

3、统一管理code和message,就需要用到枚举

创建一个包和枚举类

SpringBoot入门基础学习(二)

类方法

SpringBoot入门基础学习(二)

调用方法

SpringBoot入门基础学习(二)

SpringBoot入门基础学习(二)

Postmen测试

SpringBoot入门基础学习(二)五、单元测试

1、service测试

需要测试的方法

SpringBoot入门基础学习(二)

测试类,数据库中id=8的,年龄=9

SpringBoot入门基础学习(二)


SpringBoot入门基础学习(二)

编译

SpringBoot入门基础学习(二)

SpringBoot入门基础学习(二)

如果我们改为

SpringBoot入门基础学习(二)

控制台报错

SpringBoot入门基础学习(二)

idea工具也提供了更便捷自动生成测试类的方法

在service中选中方法名,右键go to 选中test

SpringBoot入门基础学习(二)

2、对Controller、API测试测试

我们测试studentList,创建测试类

SpringBoot入门基础学习(二)

SpringBoot入门基础学习(二)

SpringBoot入门基础学习(二)

自动生成

SpringBoot入门基础学习(二)

测试代码

SpringBoot入门基础学习(二)

控制台

SpringBoot入门基础学习(二)

如果修改了url

SpringBoot入门基础学习(二)

控制台

SpringBoot入门基础学习(二)

系统打包的时候会自动把所有的测试用例都运行一遍,报错的话会打印报错信息


相关文章:

  • 2021-11-20
  • 2021-12-01
  • 2022-01-22
  • 2021-05-09
  • 2021-09-14
  • 2021-09-19
  • 2021-12-16
猜你喜欢
  • 2021-06-22
  • 2021-06-08
  • 2021-10-22
  • 2021-10-15
  • 2022-01-06
  • 2022-12-23
  • 2021-09-20
相关资源
相似解决方案