Spring?Cloud?OpenFeign實例介紹使用方法
一. OpenFeign概述
OpenFeign 可以將提供者提供的 Restful 服務偽裝為接口進行消費,消費者只需使用“ feign 接口 + 注解 ”的方式即可直接調用提供者提供的 Restful 服務,而無需再使用 RestTemplate 。
注意:
- Feign 只涉及到消費者端,與提供者端無關
- Feign 僅僅是一個偽客戶端,其不會對請求做任何處理。即其與使用 RestTemplate 效果 是一樣的
- Feign 是通過注解實現(xiàn)RESTful 請求的
二. 使用步驟
2.1 feign接口模塊
單獨將feign接口放在模塊中,方便后續(xù)為各個服務使用。
2.1.1依賴配置
springCloud版本使用
<properties> <java.version>1.8</java.version> <spring-cloud.version>Hoxton.SR6</spring-cloud.version> <spring-cloud-alibaba.version>2.2.1.RELEASE</spring-cloud-alibaba.version> </properties> <dependencies> <!--fegin--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>${spring-cloud-alibaba.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies>
2.1.2編寫FeignClient的接口, 并加@FeignCleint 注解
url寫死在接口中不方便,可以使用動態(tài)參數(shù)配置,只需要在配置文件中添加key為feign.client.url的路徑。這里使用是單體模式,如果分布式項目中配置多個url管理起來非常費事,就需要升級使用注冊中心來解決。
import com.example.vo.DepartVO; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.*; import java.util.List; // 注意,接口名與方法名可以隨意 // 參數(shù)指定了要訪問的提供者微服務名稱 //@FeignClient(url ="http://127.0.0.1:8081", value="abcmsc-provider-depart", path = "/provider/depart") @FeignClient(url ="${feign.client.url}", value="abcmsc-provider-depart", path = "/provider/depart") public interface DepartService { @PostMapping("/save") boolean saveDepart(@RequestBody DepartVO depart); @DeleteMapping("/del/{id}") boolean removeDepartById(@PathVariable("id") int id); @PutMapping("/update") boolean modifyDepart(@RequestBody DepartVO depart); @GetMapping("/get/{id}") DepartVO getDepartById(@PathVariable("id") int id); @GetMapping("/list") List<DepartVO> listAllDeparts(); }
2.2 消費端使用fegin接口
2.2.1在消費者端添加feign接口依賴
2.2.2在消費者端配置文件中添加 feign.client.url
指定服務端的url和端口
2.2.3在消費者端啟動類中添加@EnableFeignClients
開啟Feign
功能:此注解會掃描啟動類所在的包及其子包下面@FeignClient
標注的接口,將其交給spring
容器管理,方便后續(xù)使用。
2.2.4在消費者端使用fegin接口
需要在哪里使用接口直接注入后即可使用
import com.example.providerapi.DepartService; import com.example.vo.DepartVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController @RequestMapping("/consumer/depart") public class DepartController { @Autowired private DepartService departService; @PostMapping("/save") public boolean saveHandle(@RequestBody DepartVO depart) { return departService.saveDepart(depart); } @DeleteMapping("/del/{id}") public void deleteHandle(@PathVariable("id") int id) { departService.removeDepartById(id); } @PutMapping("/update") public void updateHandle(@RequestBody DepartVO depart) { departService.modifyDepart(depart); } @GetMapping("/get/{id}") public DepartVO getHandle(@PathVariable("id") int id) { return departService.getDepartById(id); } @GetMapping("/list") public List<DepartVO> listHandle() { return departService.listAllDeparts(); } }
2.3 測試
啟動生產(chǎn)者服務,消費者服務
http://localhost:8080/consumer/depart/save
到此這篇關于Spring Cloud OpenFeign實例介紹使用方法的文章就介紹到這了,更多相關Spring Cloud OpenFeign內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringMVC使用自定義驗證器進行數(shù)據(jù)驗證的方法
SpringMVC?提供了強大的數(shù)據(jù)驗證機制,可以方便地驗證表單提交的數(shù)據(jù),除了自帶的驗證器之外,SpringMVC?還支持自定義驗證器,允許開發(fā)者根據(jù)業(yè)務需求自定義驗證規(guī)則,本文將介紹如何在?SpringMVC?中使用自定義驗證器2023-07-07@JsonFormat處理LocalDateTime失效的問題
這篇文章主要介紹了關于@JsonFormat處理LocalDateTime失效的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08SpringBoot整合任務系統(tǒng)quartz和SpringTask的方法
這篇文章主要介紹了SpringBoot整合任務系統(tǒng)(quartz和SpringTask),Quartz是一個比較成熟了的定時任務框架,但是捏,它稍微的有些許繁瑣,本文先給大家講解下Quartz的一些基本概念結合實例代碼給大家詳細講解,需要的朋友可以參考下2022-10-10EDI中JAVA通過FTP工具實現(xiàn)文件上傳下載實例
這篇文章主要介紹了EDI中JAVA通過FTP工具實現(xiàn)文件上傳下載實例,具有一定的參考價值,有需要的可以了解一下。2016-11-11Selenium Webdriver實現(xiàn)截圖功能的示例
今天小編就為大家分享一篇Selenium Webdriver實現(xiàn)截圖功能的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05Java中MessageDigest來實現(xiàn)數(shù)據(jù)加密的方法
這篇文章主要介紹了Java中MessageDigest來實現(xiàn)數(shù)據(jù)加密的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-05-05