企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
## 一、微服务初始化 通常情况下,使用Spring Boot搭建一个微服务,微服务模块构建完成之后,需要完成如下的一些初始化工作: * 自定义异常 * 自定义通用的前后端交互封装数据结构 * 异常的全局处理:知识点是ControllerAdvice和ExceptionHandler * 统一的Controller日期参数类型装换 * 等等 为了更方便进行Spring Boot微服务项目的构建,我们新建一个模块,该模块的作用就是初始化微服务构建过程中需要做的通用处理、通用工具类等等。 ![](https://img.kancloud.cn/87/c9/87c9a67da08bc36799085096f2b72024_829x247.png) ## 二、结构与文件说明 该模块的文件如下: ![](https://img.kancloud.cn/95/63/95631fc35bd3fdec042861575a68ea0b_482x414.png) 自定义异常及通用数据结构等处理工作,都是非常基础的内容。原理我就不做过多的讲解了,这些都是SpringBoot基础内容,不是Spring Cloud课程的内容。使用方法在下文中,此处为大家说明一下上面的六个文件的作用。 更多细节可以去看本项目的源码,或者我的[《手摸手教你学Spring Boot2.0》](https://www.kancloud.cn/hanxt/springboot2/content),[【实战开发】DongBB-前后端分离RBAC权限管理系统](https://www.kancloud.cn/hanxt/vue-spring/content)学习。 | 类 | 作用 | | --- | --- | | AjaxResponse | 前后端交互通用数据结构 | | CustomException | 通用自定义异常 | | CustomExceptionType | 通用自定义异常类型枚举 | | GlobalExceptionHandler | 全局异常处理,这里主要针对自定义异常 | | GlobalRequestAdvice | 全局请求数据格式处理,这里主要是针对日期类型Controller统一格式 | | GlobalResponseAdvice | 全局响应数据格式处理,这里主要是针对Controller统一格式为AjaxResponse | ## 三、如何使用该starter模块 ### 3.1.maven引入 在dongbb-cloud中统一版本号 ~~~ <dependencyManagement> <dependencies> ...... <dependency> <groupId>com.zimug.dongbb.cloud</groupId> <artifactId>zimug-web-spring-boot-starter</artifactId> <version>1.0</version> </dependency> </dependencies> </dependencyManagement> ~~~ 在各个微服务子模块中aservice-rbac,aservice-sms中引入(不带版本号) ~~~ <dependency> <groupId>com.zimug.dongbb.cloud</groupId> <artifactId>zimug-web-spring-boot-starter</artifactId> </dependency> ~~~ ### 3.2.增加Spring Boot包扫描目录 在各个微服务子模块的启动类 ~~~ @SpringBootApplication(scanBasePackages={"com.zimug.dongbb.cloud"}) public class AserviceSmsApplication { ~~~ ### 3.3.使用方法简介 为aservice-sms为例:添加一个api,短信发送服务。所有程序内部异常转化为自定义异常CustomException向上抛出 ~~~ @RestController @RequestMapping("/sms") public class SmsController { /** * 模拟短信发送 * @param phoneNo * @param content * @return 短信发送结果 */ @PostMapping(value = "/send") public AjaxResponse send(@RequestParam String phoneNo, @RequestParam String content) { if(content.isEmpty() || phoneNo.isEmpty()){ throw new CustomException(CustomExceptionType.USER_INPUT_ERROR, "消息内容或手机号不能为空!"); } System.out.println("发送短消息:" + content); return AjaxResponse.success("短消息发送成功!"); } } ~~~ ### 3.4.测试 使用postman测试一下,正常的响应结果如下(AjaxResponse数据结构): ![](https://img.kancloud.cn/33/6a/336a1bb41413f11765084d07097c5ed6_760x656.png) 异常的响应结果如下:在GlobalExceptionHandler作用下 ![](https://img.kancloud.cn/94/03/940383e11cf5a131044c841033cfa05c_925x416.png)