微服务项目之电商--10.创建通用工程ly-common项目及通用异常处理(2)

目录

 

一、创建通用工程ly-common项目

1、引入四个工具包

引入springboot的自动日志配置相关依赖

2、jsonUtile类的使用

二、通用异常处理

1.场景

interface项目中创建实体类

在service项目中编写业务

使用insomnia工具测试

问题解决

自定义异常


一、创建通用工程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类

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值