SpringBoot入门基础学习(二)

本文详细介绍了SpringBoot项目中如何使用@Valid进行表单验证、利用AOP进行请求日志记录及统一异常处理等高级特性,并通过具体示例展示了单元测试的实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、使用@Valid表单验证

二、使用AOP处理请求

三、统一异常处理

四、单元测试

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

一、使用@Valid表单验证


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

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


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



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


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


数据库新增成功


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


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


二、AOP统一处理请求日志

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

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

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

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

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

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


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


我们用Postmen访问


控制台打印拦截信息


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


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



Postmen中测试


控制台打印


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


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


使用Logger打印日志


控制台打印


3、记录每个http请求


Postmen测试


控制台打印日志


4、获取请求返回的内容


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


Postmen测试


控制台打印


三、统一异常处理

1、统一返回

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


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


添加统一放回方法


原来的新增方法


修改后


Postmen测试

成功


失败


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



Postman测试


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


Postman测试


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

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




Postmen测试


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


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

创建一个包和枚举类


类方法


调用方法



Postmen测试

五、单元测试

1、service测试

需要测试的方法


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



编译



如果我们改为


控制台报错


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

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


2、对Controller、API测试测试

我们测试studentList,创建测试类




自动生成


测试代码

控制台


如果修改了url


控制台


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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值