最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springboot中如何使用openfeign進(jìn)行接口調(diào)用

 更新時(shí)間:2023年07月14日 16:41:56   作者:唱跑雨淋淋  
這篇文章主要介紹了springboot中如何使用openfeign進(jìn)行接口調(diào)用問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

在項(xiàng)目開(kāi)發(fā)過(guò)程中,我們開(kāi)發(fā)的項(xiàng)目或多或少都會(huì)與其他交互的系統(tǒng)進(jìn)行對(duì)接集成,或者是微服務(wù)項(xiàng)目之間進(jìn)行調(diào)用,雙方相互調(diào)用接口來(lái)獲取或者傳遞數(shù)據(jù),以往我們使用的方式可能有 httpClient、okhttp、httpUrlConnection 等等,來(lái)學(xué)習(xí)一下如何使用 openfeign 來(lái)進(jìn)行調(diào)用。

一、feign 和 openfeign ?

Feign 是 Springcloud 組件中的一個(gè)輕量級(jí) Restful 的 HTTP 服務(wù)客戶端,F(xiàn)eign 內(nèi)置了 Ribbon,用來(lái)做客戶端負(fù)載均衡,去調(diào)用服務(wù)注冊(cè)中心的服務(wù)。

Feign 的使用方式是:使用Feign的注解定義接口,調(diào)用這個(gè)接口,就可以調(diào)用服務(wù)注冊(cè)中心的服務(wù)。

OpenFeign 是 springcloud 在Feign的基礎(chǔ)上支持了 SpringMVC 的注解,如 @RequestMapping 等等。

OpenFeign 的 @FeignClient 可以解析 SpringMVC 的 @RequestMapping 注解下的接口,并通過(guò)動(dòng)態(tài)代理的方式產(chǎn)生實(shí)現(xiàn)類,實(shí)現(xiàn)類中做負(fù)載均衡并調(diào)用其他服務(wù)。

二、為什么要使用 openfeign ?

1、Feign 本身不支持 Spring MVC 的注解,它有一套自己的注解

2、Fegin 是 Netflix 公司產(chǎn)品,停止更新了。

3、使用 OpenFeign 可以簡(jiǎn)化項(xiàng)目之間接口的調(diào)用,我們不需要關(guān)心 http 調(diào)用的代碼

三、創(chuàng)建一個(gè)簡(jiǎn)單的服務(wù)提供方

創(chuàng)建一個(gè)基本的 springboot 項(xiàng)目

1、引入基礎(chǔ)依賴

<dependencies>
		<dependency>
			<groupId> org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

2、application.yml 配置文件

server:
  port: 8081

3、創(chuàng)建一個(gè) controller

@RestController
@RequestMapping("/demo")
public class FeignDemoController {
    @GetMapping("/test")
    public String test(){
        return "hello openfegin";
    }
}

4、啟動(dòng)服務(wù)

四、服務(wù)調(diào)用方 openfeign 調(diào)用服務(wù)提供方

創(chuàng)建一個(gè)基本的 springboot 項(xiàng)目

1、引入相關(guān)依賴

這里要注意springboot 和 springCloud 版本

當(dāng)前 springboot 版本 2.3.4.RELEASE

springcloud 版本 Hoxton.SR4

<properties>
		<java.version>1.8</java.version>
		<spring.cloud-version>Hoxton.SR4</spring.cloud-version>
	</properties>
	<dependencies>
		<dependency>
			<groupId> org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<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>
		</dependencies>
	</dependencyManagement>

2、啟動(dòng)類中增加注解

開(kāi)啟 feign 功能

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

3、編寫(xiě)客戶端調(diào)用接口

@FeignClient 標(biāo)注該類是一個(gè)feign接口

  • name:因?yàn)檫@里并未進(jìn)行服務(wù)注冊(cè),所以就隨便命名一個(gè)
  • url:被調(diào)用的服務(wù)提供方的接口地址
@FeignClient(name = "demo",url = "http://localhost:8081/demo")
public interface FeginDemo {
    @GetMapping("test") //被調(diào)用接口的請(qǐng)求類型
    String test();
}

4、測(cè)試調(diào)用服務(wù)端提供端接口

@RestController
@RequestMapping("/feginDemo")
public class FeginDemoController {
    @Autowired
    FeginDemo feginDemo;
    @GetMapping("/test")
    public String test(){
        String test = feginDemo.test();
        return test;
    }
}

5、測(cè)試

啟動(dòng)項(xiàng)目,訪問(wèn) http://localhost:8080/feginDemo/test

接口調(diào)用成功!

那么這里呢,我們就實(shí)現(xiàn)了通過(guò) openfeign 完成一次簡(jiǎn)單的接口調(diào)用,如果沒(méi)有使用 openfeign 這里的調(diào)用我們就只能通過(guò) httpclient、okhttp 等方式來(lái)調(diào)用了,使用了 openfeign 之后,你會(huì)發(fā)現(xiàn),調(diào)用別人的接口竟是如此簡(jiǎn)單。

五、openfeign 服務(wù)熔斷

在調(diào)用接口過(guò)程中,由于是調(diào)用別人接口,肯定會(huì)存在一些意外因素,比如被調(diào)用的服務(wù)提供方系統(tǒng)宕機(jī)了,訪問(wèn)不到了等情況,如下比如我停止 被調(diào)用的服務(wù)提供方,再去進(jìn)行調(diào)用

那么這個(gè)時(shí)候我們就需要用到服務(wù)熔斷了,在對(duì)方服務(wù)異常的時(shí)候,返回這個(gè)信息肯定不太友好,我們來(lái)讓它稍微友好一些

openfeign 中默認(rèn)集成了 Hystrix

1、在 application.yml 配置文件中開(kāi)啟

feign:
  hystrix:
    enabled: true

2、配置 fallback 的處理類

創(chuàng)建一個(gè)類,實(shí)現(xiàn)我們的 FeginDemo ,然后實(shí)現(xiàn)接口中的方法,進(jìn)行重寫(xiě)

@Component
public class ErrorMessage implements FeginDemo {
    @Override
    public String test() {
        return "服務(wù)器開(kāi)小差了哦,請(qǐng)稍后再試";
    }
}

3、改造 feignClient

fallback:配置剛才的實(shí)現(xiàn)類 ErrorMessage

@FeignClient(name = "demo",url = "http://localhost:8081/demo",fallback = ErrorMessage.class)
public interface FeginDemo {
    @GetMapping("test")
    String test();
}

4、測(cè)試熔斷效果

重新啟動(dòng)一下服務(wù)再進(jìn)行訪問(wèn)

對(duì)于用戶來(lái)說(shuō),這樣是不是更加友好一點(diǎn)了呢?總比你一連串的英文往人家臉上呼來(lái)的好吧

六、配置日志

1、配置項(xiàng)目日志級(jí)別

logging:  level:    com.wxw.openfeign: debuglogging:
  level:
    com.wxw.openfeign: debug

2、配置 openfeign 日志級(jí)別

@Configuration
public class FeignLogConfiguration {
//    NONE:不記錄任何日志信息,這是默認(rèn)值。
//    BASIC:僅記錄請(qǐng)求的方法,URL以及響應(yīng)狀態(tài)碼和執(zhí)行時(shí)間
//    HEADERS:在BASIC的基礎(chǔ)上,額外記錄了請(qǐng)求和響應(yīng)的頭信息
//    FULL:記錄所有請(qǐng)求和響應(yīng)的明細(xì),包括頭信息、請(qǐng)求體、元數(shù)據(jù)
    @Bean
    Logger.Level feignLoggerLevel(){
        return Logger.Level.FULL;
    }
}

3、配置日志類

@FeignClient(name = "demo",url = "http://localhost:8081/demo",
fallback = ErrorMessage.class,configuration = FeignLogConfiguration.class)
public interface FeginDemo {
    @GetMapping("test")
    String test();
}

4、調(diào)用之后查看日志

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • springboot自動(dòng)掃描添加的BeanDefinition源碼實(shí)例詳解

    springboot自動(dòng)掃描添加的BeanDefinition源碼實(shí)例詳解

    這篇文章主要給大家介紹了關(guān)于springboot自動(dòng)掃描添加的BeanDefinition的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-02-02
  • Idea servlet映射方法優(yōu)缺點(diǎn)對(duì)比

    Idea servlet映射方法優(yōu)缺點(diǎn)對(duì)比

    這篇文章主要介紹了Idea servlet映射方法優(yōu)缺點(diǎn)對(duì)比,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Nacos配置中心同一個(gè)命名空間下配置文件引用原理分析

    Nacos配置中心同一個(gè)命名空間下配置文件引用原理分析

    這篇文章主要介紹了Nacos配置中心同一個(gè)命名空間下配置文件引用原理分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • java中線程的sleep()方法和yield()方法的區(qū)別

    java中線程的sleep()方法和yield()方法的區(qū)別

    本文主要介紹了java中線程的sleep()方法和yield()方法的區(qū)別,Thread類的sleep()方法使線程休眠指定時(shí)間,不釋放鎖,而yield()提示調(diào)度器當(dāng)前線程愿意讓出CPU資源,不保證立即切換線程,感興趣的可以了解一下
    2024-10-10
  • 詳解Mybatis攔截器安全加解密MySQL數(shù)據(jù)實(shí)戰(zhàn)

    詳解Mybatis攔截器安全加解密MySQL數(shù)據(jù)實(shí)戰(zhàn)

    本文主要介紹了Mybatis攔截器安全加解密MySQL數(shù)據(jù)實(shí)戰(zhàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 小白教程! Linux服務(wù)器上JDK安裝配置方法

    小白教程! Linux服務(wù)器上JDK安裝配置方法

    這篇文章主要為大家詳細(xì)介紹了Linux服務(wù)器上JDK安裝配置方法,小白教程!具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • 關(guān)于replaceFirst使用時(shí)的注意事項(xiàng)

    關(guān)于replaceFirst使用時(shí)的注意事項(xiàng)

    這篇文章主要介紹了關(guān)于replaceFirst使用時(shí)的注意事項(xiàng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • java加載屬性配置properties文件的方法

    java加載屬性配置properties文件的方法

    這篇文章主要介紹了java加載屬性配置properties文件的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Java如何去掉指定字符串的開(kāi)頭的指定字符

    Java如何去掉指定字符串的開(kāi)頭的指定字符

    這篇文章主要介紹了Java去掉指定字符串的開(kāi)頭的指定字符操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java利用Spire.Doc for Java實(shí)現(xiàn)在Word中插入分頁(yè)符與分節(jié)符

    Java利用Spire.Doc for Java實(shí)現(xiàn)在Word中插入分頁(yè)符與分節(jié)符

    在使用 Java 進(jìn)行 Word 文檔自動(dòng)化生成的過(guò)程中,對(duì)文檔布局的精細(xì)控制往往是開(kāi)發(fā)者面臨的實(shí)際需求,本文將介紹如何利用 Spire.Doc for Java 庫(kù),通過(guò) Java 代碼在 Word 文檔中插入分頁(yè)符和分節(jié)符,感興趣的小伙伴可以參考下
    2026-05-05

最新評(píng)論

淮滨县| 四川省| 公安县| 杭州市| 梨树县| 福鼎市| 平舆县| 海淀区| 三河市| 宁强县| 玉田县| 宝丰县| 怀集县| 丰台区| 博罗县| 上高县| 濮阳市| 利津县| 杭锦后旗| 平乐县| 泰和县| 德昌县| 竹北市| 苏尼特右旗| 元江| 丹凤县| 石渠县| 措勤县| 南雄市| 赤峰市| 汕尾市| 招远市| 岳阳市| 胶州市| 溆浦县| 宁陵县| 佛山市| 钦州市| 新平| 云浮市| 深泽县|