目录
一、创建通用工程ly-common项目
1、引入四个工具包
引入jar
引入springboot的自动日志配置相关依赖
进入json相关依赖
2、jsonUtile类的使用
作用:将对象序列化成json,将json反序列化成对象
二、通用异常处理
1.场景
我们预设这样一个场景,加如我们做新增商品,需要接收下面的参数:
price:价格
name:名称
然后对数据做简单校验:价格不能为空。
新增时,自动形成ID,然后随商品对象一起返回
interface项目中创建实体类
在service项目中编写业务
在之前我们使用的是responsebody(将响应的对象放入到response body中)
现在我们为了符号restful风格,对于返回的异常使用状态码,这个时候,使用responsebody显然不合适了
使用insomnia工具测试
为了能够返回异常信息,直接通过抛异常的方式返回
我们可以看到我们虽然返回了异常信息,但是显示的是500(服务器异常)
问题解决
主要原因是在于抛出的异常被springMvc统一处理了,所以我们需要自定义异常处理
如果自定义异常处理的话,采用的是aop思想,将请求拦截下来,进行处理通知
由于是通用的异常处理,所以其他的项目都需要使用,所以需要将异常处理放到common包下,由于使用的是springMvc的aop所以需要引入springmvc包(不需要引入自动配置包)
在默认情况下@controlleradvice需要拦截所有的controller响应
在ly-item-service项目中引入ly-common项目
注意:包扫描问题(包结构),ly-item-service一定是能够扫描到ly-common下的@controlleradvice
测试
但是现在问题又来了,它只返回了一个简单的错误信息,而且状态码是写死了的,不灵活
自定义异常
创建lyexception类管理该电商项目的所有异常
创建exceptionEnum枚举来管理异常信息
必须要有一个分号隔开,前面放对象,后面放属性
编写异常处理
但是我们可以看到返回的状态码问题解决了,但是错误信息 那里返回的还是简单
创建exceptionresult类