SpringBoot如何使用Feign實(shí)現(xiàn)遠(yuǎn)程接口調(diào)用

概述

什么是Feign豁翎?與 Ribbon ?樣角骤,F(xiàn)eign 也是由 Netflflix 提供的,F(xiàn)eign 是?個(gè)聲明式心剥、模版化的 Web Service 客戶端启搂,它簡化了開發(fā)者編寫 Web 服務(wù)客戶端的操作,開發(fā)者可以通過簡單的接?和注解來調(diào)? HTTP API刘陶, Spring Cloud Feign胳赌,它整合了 Ribbon 和 Hystrix,具有可插拔匙隔、基于注解疑苫、負(fù)載均衡、服務(wù)熔斷等?系列便捷功能。

特點(diǎn)

(1)Feign 是?個(gè)聲明式的 Web Service 客戶端捍掺;

(2)?持 Feign 注解撼短、Spring MVC 注解、JAX-RS 注解挺勿;

(3)Feign 基于 Ribbon 實(shí)現(xiàn)曲横,使?起來更加簡單;

(4)Feign 集成了 Hystrix不瓶,具備服務(wù)熔斷降級(jí)的功能禾嫉。

示例

1.首先創(chuàng)建服務(wù)端項(xiàng)目,提供數(shù)據(jù)接口蚊丐。

1.jpg

pom.xml

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.4.3</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.20</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

application.yaml

server:
  port: 8081
  servlet:
    context-path: /api/server
spring:
  application:
    name: userService

User

@Data
public class User {
    private Long id;
    private String name;
    private Integer age;
}

UserController

@RestController
public class UserController {
    @GetMapping("/getUserInfo")
    public User getUserInfo(){
        User user = new User();
        user.setId(1L);
        user.setName("BanQ");
        user.setAge(21);
        return user;
    }
}

啟動(dòng)類

@SpringBootApplication
public class ServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ServerApplication.class,args);
    }
}

瀏覽器訪問http://localhost:8081/api/server/getUserInfo

2.jpg

2.創(chuàng)建客戶端項(xiàng)目熙参,調(diào)用服務(wù)端接口请毛。

3.jpg

pom.xml

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.12.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.20</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
        <version>2.0.2.RELEASE</version>
    </dependency>
</dependencies>

application.yaml

server:
  port: 8082
  servlet:
    context-path: /api/client

UserFeignClient

@FeignClient(
        name = "userService",
        url = "http://localhost:8081/api/server"
)
public interface UserFeignClient {
    @RequestMapping(value = "/getUserInfo",method = RequestMethod.GET)
    @ResponseBody
    String getUserInfo();
}

TestController

@RestController
public class TestController {

    @Autowired
    private UserFeignClient userFeignClient;

    @GetMapping("/get")
    public String get(){
        return userFeignClient.getUserInfo();
    }
}

啟動(dòng)類

@EnableFeignClients
@SpringBootApplication
public class ClientApplication {
    public static void main(String[] args) {
        SpringApplication.run(ClientApplication.class,args);
    }
}

瀏覽器訪問:http://localhost:8082/api/client/get

4.jpg

這樣就實(shí)現(xiàn)了通過feign client來調(diào)用遠(yuǎn)程(第三方)接口了澜术。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末似袁,一起剝皮案震驚了整個(gè)濱河市传蹈,隨后出現(xiàn)的幾起案子呜师,更是在濱河造成了極大的恐慌浅缸,老刑警劉巖软吐,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件现喳,死亡現(xiàn)場離奇詭異呛梆,居然都是意外死亡膀捷,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門削彬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來全庸,“玉大人,你說我怎么就攤上這事融痛『” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵雁刷,是天一觀的道長覆劈。 經(jīng)常有香客問我,道長沛励,這世上最難降的妖魔是什么责语? 我笑而不...
    開封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮目派,結(jié)果婚禮上坤候,老公的妹妹穿的比我還像新娘。我一直安慰自己企蹭,他們只是感情好白筹,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開白布智末。 她就那樣靜靜地躺著,像睡著了一般徒河。 火紅的嫁衣襯著肌膚如雪系馆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天顽照,我揣著相機(jī)與錄音由蘑,去河邊找鬼。 笑死代兵,一個(gè)胖子當(dāng)著我的面吹牛尼酿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播奢人,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼谓媒,長吁一口氣:“原來是場噩夢啊……” “哼淆院!你這毒婦竟也來了何乎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤土辩,失蹤者是張志新(化名)和其女友劉穎支救,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拷淘,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡各墨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了启涯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贬堵。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖结洼,靈堂內(nèi)的尸體忽然破棺而出黎做,到底是詐尸還是另有隱情,我是刑警寧澤松忍,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布蒸殿,位于F島的核電站,受9級(jí)特大地震影響鸣峭,放射性物質(zhì)發(fā)生泄漏宏所。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一摊溶、第九天 我趴在偏房一處隱蔽的房頂上張望爬骤。 院中可真熱鬧,春花似錦莫换、人聲如沸盖腕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽溃列。三九已至劲厌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間听隐,已是汗流浹背补鼻。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留雅任,地道東北人风范。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像沪么,于是被迫代替她去往敵國和親硼婿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容