微服务改造代码依赖同步上
commom模块
全局异常处理器
请求响应封装类
公共的工具类
model模块
很多地方公用的实体类
注意的是代码沙箱的model的引入
judge-service模块
定义公共的接口模块
先把所有的接口都搬运进来
需要注意的是引入实体类
微服务改造代码依赖同步下
如果子模块缺少了版本
要不去父模块里面去找 要不直接手动指定
接下来我们要去搬运公共接口模块
dduoj-backend-service-client
只存放接口 不存放实现 多个服务之间要共享
先无脑搬运所有的service
然后指定openFeign的版本 客户端调用工具
OpenFeign 是一个声明式的 HTTP 客户端,它使得调用 RESTful API 变得更加简单。通过使用注解,你可以定义接口和方法,OpenFeign 会自动生成相应的 HTTP 请求。
以下是 OpenFeign 的一些主要特点:
-
声明式编程:通过接口和注解来定义服务,不需要手动编写底层 HTTP 客户端代码。
-
集成:可以与 Spring Cloud 轻松集成,简化微服务间的调用。
-
可配置性:支持负载均衡、熔断等功能,方便进行微服务架构中的服务治理。
-
扩展性:可以通过自定义拦截器、解码器等扩展其功能。
总的来说,OpenFeign 让服务间的 HTTP 调用变得更加简洁和易于维护。
需要指定一下openfeign的版本
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>3.1.5</version>
</dependency>
具体业务服务的实现
给项目引入公共依赖
接下来我们做一下主类的完善
打个比方
指定一个bean
拓展1
@RestControllerAdvice
是 Spring 框架中的一个注解,用于集中处理控制器中的异常和数据绑定。在使用该注解的类中,可以定义全局的异常处理方法,返回自定义的错误响应,或者对全局的数据绑定进行处理。这样可以提升代码的可维护性和清晰度。你想更深入了解某个特定用法吗?
这个异常处理类是在common项目里面
所以我们要加一个scan注解
拓展2
QueryWrapper是MyBatis-Plus中的一个工具类,用于构建SQL查询条件。它允许开发者使用链式编程的方式,灵活地添加查询条件,如等于、不等于、范围查询等,从而简化代码和提高可读性。
queryWrapper.lt()——小于
queryWrapper.le()——小于等于
queryWrapper.gt()——大于
queryWrapper.ge()——大于等于
queryWrapper.eq()——等于
queryWrapper.ne()——不等于
queryWrapper.betweeen(“age”,10,20)——age在值10到20之间
queryWrapper.notBetweeen(“age”,10,20)——age不在值10到20之间
queryWrapper.like(“属性”,“值”)——模糊查询匹配值‘%值%’
queryWrapper.notLike(“属性”,“值”)——模糊查询不匹配值‘%值%’
queryWrapper.likeLeft(“属性”,“值”)——模糊查询匹配最后一位值‘%值’
queryWrapper.likeRight(“属性”,“值”)——模糊查询匹配第一位值‘值%’
queryWrapper.isNull()——值为空或null
queryWrapper.isNotNull()——值不为空或null
queryWrapper.in(“属性”,条件,条件 )——符合多个条件的值
queryWrapper.notIn(“属性”,条件,条件 )——不符合多个条件的值
queryWrapper.or()——或者
queryWrapper.and()——和
queryWrapper.orderByAsc(“属性”)——根据属性升序排序
queryWrapper.orderByDesc(“属性”)——根据属性降序排序
queryWrapper.inSql(“sql语句”)——符合sql语句的值
queryWrapper.notSql(“sql语句”)——不符合SQL语句的值
queryWrapper.esists(“SQL语句”)——查询符合SQL语句的值
queryWrapper.notEsists(“SQL语句”)——查询不符合SQL语句的值
案例
/**
* 案例二:查看姓张的并且邮箱不为空的用户列表
* @return
*/
@RequestMapping("/list2")
public Map<String,Object> getList2(){
Map<String,Object> result = new HashMap<>();
//构建一个查询的wrapper
QueryWrapper<User> wrapper = new QueryWrapper<User>();
//姓张的
wrapper.likeRight("name","张");
//邮箱不为空
wrapper.isNotNull("email");
//未删除
wrapper.eq("del_flag",0);
//创建时间降序
wrapper.orderByDesc("create_time");
List<User> list = userMapper.selectList(wrapper);
result.put("data",list);
return result;
}
我们在注意要在其他模块里面吧common模块和service-client模块作为依赖引入
一个是通用类 一个是判题通用类
服务内部调用
现在的问题是 题目服务依赖用户服务 但是代码已经分到不同的包 找不到对应的bean
可以使用Open Feign组件实现跨服务的远程调用
怎么梳理这个内部调用呢
下回我们继续