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 的文章