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è)偽客戶(hù)端,其不會(huì)對(duì)請(qǐng)求做任何處理。即其與使用 RestTemplate 效果 是一樣的
- Feign 是通過(guò)注解實(shí)現(xiàn)RESTful 請(qǐng)求的
二. 使用步驟
2.1 feign接口模塊
單獨(dú)將feign接口放在模塊中,方便后續(xù)為各個(gè)服務(wù)使用。

2.1.1依賴(lài)配置
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ù)指定了要訪(fǎng)問(wèn)的提供者微服務(wù)名稱(chēng)
//@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接口依賴(lài)

2.2.2在消費(fèi)者端配置文件中添加 feign.client.url
指定服務(wù)端的url和端口

2.2.3在消費(fèi)者端啟動(dòng)類(lèi)中添加@EnableFeignClients
開(kāi)啟Feign功能:此注解會(huì)掃描啟動(dòng)類(lèi)所在的包及其子包下面@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)文章
java開(kāi)發(fā)之Jdbc分頁(yè)源碼詳解
這篇文章主要介紹了java開(kāi)發(fā)之Jdb分頁(yè)源碼詳解,需要的朋友可以參考下2020-02-02
spring AOP自定義注解方式實(shí)現(xiàn)日志管理的實(shí)例講解
下面小編就為大家分享一篇spring AOP自定義注解方式實(shí)現(xiàn)日志管理的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01
詳解用JWT對(duì)SpringCloud進(jìn)行認(rèn)證和鑒權(quán)
這篇文章主要介紹了詳解用JWT對(duì)SpringCloud進(jìn)行認(rèn)證和鑒權(quán),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
SpringBoot中的404錯(cuò)誤:原因、影響及解決策略
本文詳細(xì)介紹了SpringBoot中404錯(cuò)誤的出現(xiàn)原因、影響以及處理策略,404錯(cuò)誤常見(jiàn)于URL路徑錯(cuò)誤、控制器配置問(wèn)題、靜態(tài)資源配置錯(cuò)誤、依賴(lài)缺失或版本不兼容、配置錯(cuò)誤和服務(wù)器配置問(wèn)題,解決方法包括檢查URL路徑、審查控制器配置、配置靜態(tài)資源2025-02-02
Java一些常見(jiàn)的出錯(cuò)異常處理方法總結(jié)
下面小編就為大家?guī)?lái)一篇Java一些常見(jiàn)的出錯(cuò)異常處理方法總結(jié)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06
Java對(duì)象的XML序列化與反序列化實(shí)例解析
這篇文章主要介紹了Java對(duì)象的XML序列化與反序列化實(shí)例解析,小編覺(jué)得還是挺不錯(cuò)的,這里分享給大家。2017-10-10
Java實(shí)現(xiàn)定時(shí)任務(wù)的方法總結(jié)
這篇文章主要為大家詳細(xì)介紹了Java中實(shí)現(xiàn)定時(shí)任務(wù)的常用7中方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的小伙伴可以參考一下2023-06-06
Java Jedis NOAUTH Authentication required問(wèn)題解決方法
這篇文章主要介紹了Java Jedis NOAUTH Authentication required問(wèn)題解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07

