Spring?Cloud?OpenFeign實(shí)例介紹使用方法
一. OpenFeign概述
OpenFeign 可以將提供者提供的 Restful 服務(wù)偽裝為接口進(jìn)行消費(fèi),消費(fèi)者只需使用“ feign 接口 + 注解 ”的方式即可直接調(diào)用提供者提供的 Restful 服務(wù),而無(wú)需再使用 RestTemplate 。
注意:
- Feign 只涉及到消費(fèi)者端,與提供者端無(wú)關(guān)
- Feign 僅僅是一個(gè)偽客戶端,其不會(huì)對(duì)請(qǐng)求做任何處理。即其與使用 RestTemplate 效果 是一樣的
- Feign 是通過(guò)注解實(shí)現(xiàn)RESTful 請(qǐng)求的
二. 使用步驟
2.1 feign接口模塊
單獨(dú)將feign接口放在模塊中,方便后續(xù)為各個(gè)服務(wù)使用。
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編寫(xiě)FeignClient的接口, 并加@FeignCleint 注解
url寫(xiě)死在接口中不方便,可以使用動(dòng)態(tài)參數(shù)配置,只需要在配置文件中添加key為feign.client.url的路徑。這里使用是單體模式,如果分布式項(xiàng)目中配置多個(gè)url管理起來(lái)非常費(fèi)事,就需要升級(jí)使用注冊(cè)中心來(lái)解決。
import com.example.vo.DepartVO; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.*; import java.util.List; // 注意,接口名與方法名可以隨意 // 參數(shù)指定了要訪問(wèn)的提供者微服務(wù)名稱 //@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 消費(fèi)端使用fegin接口
2.2.1在消費(fèi)者端添加feign接口依賴
2.2.2在消費(fèi)者端配置文件中添加 feign.client.url
指定服務(wù)端的url和端口
2.2.3在消費(fèi)者端啟動(dòng)類中添加@EnableFeignClients
開(kāi)啟Feign
功能:此注解會(huì)掃描啟動(dòng)類所在的包及其子包下面@FeignClient
標(biāo)注的接口,將其交給spring
容器管理,方便后續(xù)使用。
2.2.4在消費(fèi)者端使用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 測(cè)試
啟動(dòng)生產(chǎn)者服務(wù),消費(fèi)者服務(wù)
http://localhost:8080/consumer/depart/save
到此這篇關(guān)于Spring Cloud OpenFeign實(shí)例介紹使用方法的文章就介紹到這了,更多相關(guān)Spring Cloud OpenFeign內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringMVC使用自定義驗(yàn)證器進(jìn)行數(shù)據(jù)驗(yàn)證的方法
SpringMVC?提供了強(qiáng)大的數(shù)據(jù)驗(yàn)證機(jī)制,可以方便地驗(yàn)證表單提交的數(shù)據(jù),除了自帶的驗(yàn)證器之外,SpringMVC?還支持自定義驗(yàn)證器,允許開(kāi)發(fā)者根據(jù)業(yè)務(wù)需求自定義驗(yàn)證規(guī)則,本文將介紹如何在?SpringMVC?中使用自定義驗(yàn)證器2023-07-07關(guān)于Java大整數(shù)運(yùn)算之BigInteger類
這篇文章主要介紹了關(guān)于Java大整數(shù)運(yùn)算之BigInteger類,BigInteger提供高精度整型數(shù)據(jù)類型及相關(guān)操作,所有操作中,都以二進(jìn)制補(bǔ)碼形式表示,需要的朋友可以參考下2023-05-05@JsonFormat處理LocalDateTime失效的問(wèn)題
這篇文章主要介紹了關(guān)于@JsonFormat處理LocalDateTime失效的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08SpringBoot整合任務(wù)系統(tǒng)quartz和SpringTask的方法
這篇文章主要介紹了SpringBoot整合任務(wù)系統(tǒng)(quartz和SpringTask),Quartz是一個(gè)比較成熟了的定時(shí)任務(wù)框架,但是捏,它稍微的有些許繁瑣,本文先給大家講解下Quartz的一些基本概念結(jié)合實(shí)例代碼給大家詳細(xì)講解,需要的朋友可以參考下2022-10-10EDI中JAVA通過(guò)FTP工具實(shí)現(xiàn)文件上傳下載實(shí)例
這篇文章主要介紹了EDI中JAVA通過(guò)FTP工具實(shí)現(xiàn)文件上傳下載實(shí)例,具有一定的參考價(jià)值,有需要的可以了解一下。2016-11-11Selenium Webdriver實(shí)現(xiàn)截圖功能的示例
今天小編就為大家分享一篇Selenium Webdriver實(shí)現(xiàn)截圖功能的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05Java中MessageDigest來(lái)實(shí)現(xiàn)數(shù)據(jù)加密的方法
這篇文章主要介紹了Java中MessageDigest來(lái)實(shí)現(xiàn)數(shù)據(jù)加密的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05