Spring Cloud Eureka集成Feign+断路器+Swagger+MyBatis-Plus微工程整合说明
一、技术简介
Eureka是用于微服务注册中心的集大成者,至今已发布多个版本。Spring Cloud也将Eureka组合进内部的生态圈,进行版本发布。最新版本是spring-cloud-starter-eureka-server的1.4.7.RELEASE这个版本。
而FeignClient是用于转发RestTemplate请求的一个组件,Feign包含有Ribbon转发Http服务的功能,同时自动集成了Hystrix断路器的功能。Feign方便Spring Cloud项目进行跨服务调用,同时避免了大量使用RestTemplate转发。Feign通过注册进注册中心,从而方便进行服务发现。Feign服务端开启@EnableEurekaClient方便各客户端发现,Feign客户端开启@EnableFeignClients方便使用Feign服务。
断路器是用来避免微服务雪崩效应,微服务服务链过长时,调用服务如果其中有一个服务挂掉,则会导致整个生态链受影响,请求超时。为了解决这个问题,采用断路器进行阻断,避免服务挂掉而漫长等待。
Swagger是用来方便查询接口,提供给前端开发人员识别调用接口使用的。
MyBatis-Plus是用来进行代码生成器、代码生成工具。
二、Eureka工程
首先准备父工程Pom.xml如下,采用Spring Boot 2.1.0这个版本
搭建Eureka工程,其Maven配置文件
编写Eureka配置文件
主启动工程
启动Eureka
打开浏览器:http://127.0.0.1:1111
进入注册中心界面
Eureka搭建成功
三、Feign调用及断路器
新建一个接口基工程
其Pom.xml如下:
新建公共实体基类
新建接口基类
这个就是Feign接口基工程
新建一个Feign服务端工程,主体结构如下:
其Pom.xml如下:
其配置文件
开启Eureka注册
Feign主服务Controller:
主启动类:
启动Feign服务端
查看Eureka注册中心:
已加载至服务
搭建Feign消费者
其Pom.xml
配置文件,连接至Eureka
其Feign接口继承至Feign接口基工程的基接口
Feign接口基工程的基接口
指定的服务提供者
<code>@FeignClient(name="demo-feign-freeservice" /<code>
<code>@FeignClient(name="demo-feign-freeservice" /<code>
<code>fallback=DemoFeignFallback.class/<code>
<code> 处理已说明 四、MyBatis-PlusMyBatis-Plus在Maven中引入的其配置文件application.yml配置了MyBatis XML扫描文件扫描实体接口:MyBatis-Plus依赖的工具:代码生成工具类:设置作者及目录配置数据源设置需要生成的表设置生成的包,指定了基础包,Service类的包指定xml生成:执行生成:运行之后,代码生成五、SwaggerSwagger引入的Maven:Swagger包配置扫描Controller:Swagger加入后查看Swagger地址http://127.0.0.1:8091/swagger-ui.htmlSwagger集成完毕六、总结这篇文档讲述了Eureka、Feign、断路器、Swagger、MyBatis-Plus等工具与Spring CLoud的整合/<code>
代表了断路器处理逻辑
启动Feign微服务消费者
注册中心:
<code>服务都已启动打开PostMan测试Feign消费者正常请求:/<code>
通过断路器处理的(接口调用超时)
再次请求PostMan,超时,断路器处理的
如上,Feign及断路器处理已说明
四、MyBatis-Plus
MyBatis-Plus在Maven中引入的
其配置文件application.yml
配置了MyBatis XML扫描文件
扫描实体接口:
MyBatis-Plus依赖的工具:
代码生成工具类:
设置作者及目录
配置数据源
设置需要生成的表
设置生成的包,指定了基础包,Service类的包
指定xml生成:
执行生成:
运行之后,代码生成
五、Swagger
Swagger引入的Maven:
Swagger包配置扫描Controller:
Swagger加入后查看Swagger地址http://127.0.0.1:8091/swagger-ui.html
Swagger集成完毕
六、总结
这篇文档讲述了Eureka、Feign、断路器、Swagger、MyBatis-Plus等工具与Spring CLoud的整合
閱讀更多 李越Java 的文章