溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

SpringCloud的OpenFeign項(xiàng)目怎么創(chuàng)建

發(fā)布時(shí)間:2022-01-12 09:28:35 來源:億速云 閱讀:125 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要講解了“SpringCloud的OpenFeign項(xiàng)目怎么創(chuàng)建”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“SpringCloud的OpenFeign項(xiàng)目怎么創(chuàng)建”吧!

什么是OpenFeign

OpenFeign是聲明式的Http客戶端,通過OpenFeign發(fā)送Http請求非常的簡單

  • 注解式開發(fā),接口+注解的方式
  • OpenFeign支持多種的對象的序列化 和 反序列化的工具
  • OpenFeign默認(rèn)集成了Ribbon,可以直接進(jìn)行負(fù)載均衡

Feign 和 OpenFeign是兩個(gè)技術(shù),都是作為服務(wù)調(diào)用存在的,OpenFeign 是SpringCloud在Feign的基礎(chǔ)上進(jìn)行封裝得到的,支持SpringMvc的注解。

創(chuàng)建OpenFeign的項(xiàng)目

1.創(chuàng)建新Module項(xiàng)目 cloud-openfeign-8806

2.pom文件導(dǎo)入依賴

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
       <artifactId>cloud-demo-20f</artifactId>
       <groupId>com.lby</groupId>
       <version>1.0-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>

   <artifactId>cloud-openfeign-8806</artifactId>

   <dependencies>
<!--        openfeign-->
       <dependency>
           <groupId>org.springframework.cloud</groupId>
           <artifactId>spring-cloud-starter-openfeign</artifactId>
       </dependency>

       <!--        Eureka 客戶端的依賴-->
       <dependency>
           <groupId>org.springframework.cloud</groupId>
           <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
       </dependency>

       <!--        web的依賴-->
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-web</artifactId>
       </dependency>

       <!--        測試的依賴-->
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-test</artifactId>
           <scope>test</scope>
       </dependency>
   </dependencies>
</project>
 

3.啟動類

package com.lby;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

/**
* @EnableFeignClients OpenFeign的注解
*/
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class OpenFeignRun8806 {
   public static void main(String[] args) {
       SpringApplication.run(OpenFeignRun8806.class,args);
   }

}

 

4.配置文件

server:
 port: 8806

#指定當(dāng)前服務(wù)的名稱  會注冊到注冊中心
spring:
 application:
   name: eureka-openfeign-8806

#  指定 服務(wù)注冊中心的地址
eureka:
 client:
   serviceUrl:
     defaultZone: http://localhost:8801/eureka,http://localhost:8800/eureka
 

通過四步我們就擁有了一個(gè)最初步的項(xiàng)目,接下來,我們會通過接口+注解的方式開發(fā)OpenFeign的服務(wù)調(diào)用。

 
OpenFeign接口的開發(fā)

OpenFeign的開發(fā)方式:接口+注解,微服務(wù)調(diào)用的接口+@FeignClient 類似于Dao接口的開發(fā)方式(Mybatis接口式開發(fā)),之前我們開發(fā)Dao接口,在接口上添加@Mapper的注解就可以獲取一個(gè)Mybatis的接口

1.業(yè)務(wù)邏輯接口+@FeignClient創(chuàng)建OpenFeign服務(wù)調(diào)用

package com.lby.service;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

/**
* @author luxiaoyang
* @create 2020-04-05-19:41
*
* @FeignClient 參數(shù)是要請求服務(wù)的服務(wù)名稱
*/
@Component
@FeignClient(value = "eureka-client-8803")
public interface ConsumerFeignService {

   /**
    * 接口中的方法是被調(diào)用服務(wù)的Controller接口
    */
   @GetMapping("showImgById")
   String showImgById(@RequestParam("id") Integer id);
}

 

接口的書寫規(guī)則如下圖所示:

SpringCloud的OpenFeign項(xiàng)目怎么創(chuàng)建

2.在消費(fèi)者中創(chuàng)建一個(gè)ConsumerController使用OpenFeign接口

package com.lby.controller;

import com.lby.service.ConsumerFeignService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

/**
* @author luxiaoyang
* @create 2020-04-05-19:47
*/
@RestController
public class ConsumerController {
   /**
    * 直接裝配OpenFeign的服務(wù)調(diào)用接口
    */
   @Resource
   private ConsumerFeignService consumerFeignService;

   @GetMapping("testOpenFeign")
   public String testOpenFeign(){
       String s = consumerFeignService.showImgById(1);
       return "Feign服務(wù)調(diào)用的結(jié)果為:"+s;
   }
}

   

啟動項(xiàng)目

啟動注冊中心,服務(wù)提供者(兩個(gè)),以及Feign服務(wù)

SpringCloud的OpenFeign項(xiàng)目怎么創(chuàng)建  

請求eureka-openfeign-8806的Controller接口:http://127.0.0.1:8806/testOpenFeign

可以看到兩次請求都能夠獲取服務(wù)提供者的響應(yīng),并且能夠負(fù)載均衡

SpringCloud的OpenFeign項(xiàng)目怎么創(chuàng)建  
SpringCloud的OpenFeign項(xiàng)目怎么創(chuàng)建    

感謝各位的閱讀,以上就是“SpringCloud的OpenFeign項(xiàng)目怎么創(chuàng)建”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對SpringCloud的OpenFeign項(xiàng)目怎么創(chuàng)建這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI