Spring Cloud微服務(wù)架構(gòu)開(kāi)發(fā)(第2版)第4章 聲明式服務(wù)調(diào)用組件OpenFeign_第1頁(yè)
Spring Cloud微服務(wù)架構(gòu)開(kāi)發(fā)(第2版)第4章 聲明式服務(wù)調(diào)用組件OpenFeign_第2頁(yè)
Spring Cloud微服務(wù)架構(gòu)開(kāi)發(fā)(第2版)第4章 聲明式服務(wù)調(diào)用組件OpenFeign_第3頁(yè)
Spring Cloud微服務(wù)架構(gòu)開(kāi)發(fā)(第2版)第4章 聲明式服務(wù)調(diào)用組件OpenFeign_第4頁(yè)
Spring Cloud微服務(wù)架構(gòu)開(kāi)發(fā)(第2版)第4章 聲明式服務(wù)調(diào)用組件OpenFeign_第5頁(yè)
已閱讀5頁(yè),還剩62頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第4章聲明式服務(wù)調(diào)用組件OpenFeign《SpringCloud微服務(wù)架構(gòu)開(kāi)發(fā)(第2版)》學(xué)習(xí)目標(biāo)/Target了解OpenFeign概述,能簡(jiǎn)述使用OpenFegin的便利性,以及OpenFegin的常用注解掌握OpenFeign入門(mén)案例,能夠使用OpenFeign完成服務(wù)調(diào)用了解OpenFeign工作原理,能夠簡(jiǎn)述OpenFeign實(shí)現(xiàn)遠(yuǎn)程服務(wù)調(diào)用的流程學(xué)習(xí)目標(biāo)/Target掌握OpenFeign的超時(shí)控制配置,能夠使用自定義OpenFeign的超時(shí)控制掌握日志級(jí)別配置,能夠使用全局配置和局部配置兩種方式實(shí)現(xiàn)OpenFeign的日志級(jí)別配置了解OpenFeign的數(shù)據(jù)壓縮配置,能夠簡(jiǎn)述OpenFeign數(shù)據(jù)壓縮配置的實(shí)現(xiàn)方法章節(jié)概述/Summary微服務(wù)架構(gòu)中服務(wù)之間的調(diào)用比較頻繁,如果使用傳統(tǒng)的RESTAPI調(diào)用方式需要編寫(xiě)大量重復(fù)代碼,使得代碼編寫(xiě)和維護(hù)變得煩瑣。為了解決這個(gè)問(wèn)題,一些公司提供了更為便捷的聲明式服務(wù)調(diào)用組件,通過(guò)聲明式服務(wù)調(diào)用組件可以避免手動(dòng)編寫(xiě)大量的RESTAPI調(diào)用代碼,從而簡(jiǎn)化了服務(wù)間的調(diào)用和維護(hù)。SpringCloudOpenFeign(后續(xù)簡(jiǎn)稱為OpenFeign)是當(dāng)前主流的聲明式服務(wù)調(diào)用組件之一,本章將對(duì)聲明式服務(wù)調(diào)用組件OpenFeign進(jìn)行講解。目錄/Contents4.14.2OpenFeign概述OpenFeign入門(mén)案例4.3OpenFeign工作原理4.4OpenFeign常見(jiàn)配置OpenFeign概述4.14.1

OpenFeign概述先定一個(gè)小目標(biāo)!

先定一個(gè)小目標(biāo)!了解OpenFeign,能簡(jiǎn)述使用OpenFegin的便利性,以及OpenFegin的常用注解4.1

OpenFeign概述需要編寫(xiě)完整的請(qǐng)求和響應(yīng)處理代碼,這會(huì)導(dǎo)致代碼冗長(zhǎng),也會(huì)增加代碼的維護(hù)難度。(1)代碼冗長(zhǎng)需要手動(dòng)構(gòu)建HTTP請(qǐng)求,無(wú)法通過(guò)聲明式的方式來(lái)進(jìn)行服務(wù)調(diào)用。(2)缺乏聲明式的服務(wù)調(diào)用對(duì)于需要進(jìn)行負(fù)載均衡和服務(wù)發(fā)現(xiàn)的場(chǎng)景,RestTemplate需要通過(guò)手動(dòng)編寫(xiě)代碼實(shí)現(xiàn)。(3)負(fù)載均衡和服務(wù)發(fā)現(xiàn)不夠靈活使用RestTemplate進(jìn)行HTTP請(qǐng)求的不便之處4.1

OpenFeign概述Feign是業(yè)內(nèi)名氣最大、最受歡迎的聲明式服務(wù)調(diào)用組件之一。Feign能夠通過(guò)讀取Java接口上的注解,來(lái)生成一個(gè)注解驅(qū)動(dòng)的REST客戶端。Feign集成了Ribbon負(fù)載均衡器,進(jìn)行負(fù)載均衡和服務(wù)調(diào)用更加高效、穩(wěn)定和靈活。2019年Netflix公司宣布Feign組件正式進(jìn)入停更維護(hù)狀態(tài)。OpenFeginSpring官方基于Feign推出的組件,作為微服務(wù)架構(gòu)系統(tǒng)中Feign的替代方案。OpenFeign是SpringCloud對(duì)Feign的二次封裝,它具有Feign的所有功能,并在Feign的基礎(chǔ)上增加了對(duì)SpringMVC注解的支持。Feign4.1

OpenFeign概述注解說(shuō)明@RequestMappingSpringMVC的注解,通過(guò)該注解來(lái)指定控制器(Controller)可以處理哪些URL請(qǐng)求。@GetMappingSpringMVC的注解,用來(lái)映射GET方式的請(qǐng)求,相當(dāng)于@RequestMapping(method=RequestMethod.GET)。@PostMappingSpringMVC的注解,用來(lái)映射POST方式的請(qǐng)求,相當(dāng)于@RequestMapping(method=RequestMethod.POST)。@FeignClientOpenFegin的注解,標(biāo)注在接口上,用于聲明該接口是一個(gè)Feign客戶端,通過(guò)Feign客戶端可以自動(dòng)處理HTTP請(qǐng)求的發(fā)送和響應(yīng)的解析。@EnableFeignClientsOpenFegin的注解,用于開(kāi)啟Feign客戶端的自動(dòng)化配置功能。OpenFegin的常用注解在使用OpenFeign調(diào)用其他服務(wù)之前,需要使用@FeignClient注解聲明對(duì)應(yīng)的Feign客戶端。@FeignClient注解中包含一個(gè)名為value的屬性,該屬性用于指定該Feign客戶端要調(diào)用的遠(yuǎn)程服務(wù)的名稱。(1)@FeignClien4.1

OpenFeign概述@FeignClient(value="product-service")publicinterfaceProductService{@GetMapping("/findNameById")StringfindNameById(Integerid);}@EnableFeignClients注解可以開(kāi)啟Feign客戶端功能,使用@EnableFeignClients注解后,程序默認(rèn)會(huì)掃描該注解所標(biāo)注的類所在的包及其子包下所有文件,并根據(jù)標(biāo)注了@FeignClient注解的接口中定義的方法和參數(shù)生成代理對(duì)象,開(kāi)發(fā)人員可以使用標(biāo)注了@FeignClient注解的接口來(lái)調(diào)用其他服務(wù)中的REST服務(wù)。(2)@EnableFeignClients4.1

OpenFeign概述@EnableFeignClients注解可以通過(guò)如下屬性指定掃描的Feign客戶端接口。basePackages:指定要掃描的Feign客戶端接口所在的包,多個(gè)值可以使用逗號(hào)分隔。默認(rèn)值為空數(shù)組,表示從標(biāo)注了@EnableFeignClients注解的配置類所在包開(kāi)始掃描。basePackageClasses:指定要掃描的Feign客戶端接口所在的類,多個(gè)值可以使用逗號(hào)分隔。默認(rèn)值為空數(shù)組,表示從標(biāo)注了@EnableFeignClients注解的配置類所在包開(kāi)始掃描。(2)@EnableFeignClients4.1

OpenFeign概述4.1

OpenFeign概述(2)@EnableFeignClients在使用OpenFeign調(diào)用其他服務(wù)之前,需要使用@FeignClient注解聲明對(duì)應(yīng)的Feign客戶端。@FeignClient注解中包含一個(gè)名為value的屬性,該屬性用于指定該Feign客戶端要調(diào)用的遠(yuǎn)程服務(wù)的名稱。@FeignClient(value="product-service")publicinterfaceProductService{@GetMapping("/findNameById")StringfindNameById(Integerid);}OpenFeign入門(mén)案例4.24.2

OpenFeign入門(mén)案例先定一個(gè)小目標(biāo)!

先定一個(gè)小目標(biāo)!掌握OpenFeign入門(mén)案例,能夠使用OpenFeign完成服務(wù)調(diào)用4.2

OpenFeign入門(mén)案例1.創(chuàng)建項(xiàng)目父工程文件4-1pom.xml源代碼在IDEA中創(chuàng)建一個(gè)名稱為openFeign的Maven工程,在工程的pom.xml中聲明SpringCloud、SpringCloudAlibaba、SpringBoot的相關(guān)依賴。具體如文件4-1所示。4.2

OpenFeign入門(mén)案例2.創(chuàng)建服務(wù)提供者模塊文件4-2pom.xml源代碼在openFeign工程中創(chuàng)建一個(gè)名稱為provider的Maven子模塊,并引入對(duì)應(yīng)的依賴,具體如文件4-2所示。4.2

OpenFeign入門(mén)案例3.配置服務(wù)提供者信息文件4-3pom.xml源代碼在provider模塊中創(chuàng)建全局配置文件application.yml,并在該配置文件中配置服務(wù)名稱、Nacos服務(wù)端地址等信息,具體如文件4-3所示。4.2

OpenFeign入門(mén)案例4.創(chuàng)建服務(wù)提供者的控制器類文件4-4ProjectController.java源代碼在provider模塊的java目錄下創(chuàng)建包c(diǎn)om.itheima.controller,在該包下創(chuàng)建名稱為ProjectController的控制器類,并在該類中創(chuàng)建方法處理對(duì)應(yīng)的請(qǐng)求,具體如文件4-4所示。4.2

OpenFeign入門(mén)案例5.創(chuàng)建服務(wù)提供者的項(xiàng)目啟動(dòng)類文件4-5ProviderApp.java源代碼在provider模塊的com.itheima包下創(chuàng)建項(xiàng)目的啟動(dòng)類,具體如文件4-5所示。4.2

OpenFeign入門(mén)案例6.創(chuàng)建服務(wù)消費(fèi)者模塊文件4-6pom.xml源代碼在openFeign工程中創(chuàng)建一個(gè)名稱為consumer的Maven子模塊,在模塊的pom.xml文件中引入對(duì)應(yīng)的依賴,具體如文件4-6所示。4.2

OpenFeign入門(mén)案例7.配置服務(wù)消費(fèi)者信息文件4-7application.yml源代碼在consumer模塊中創(chuàng)建全局配置文件application.yml,并在該配置文件中配置服務(wù)名稱、Nacos服務(wù)端地址等信息,具體如文件4-7所示。4.2

OpenFeign入門(mén)案例8.創(chuàng)建Feign客戶端接口文件4-8application.yml源代碼在consumer模塊的java目錄下創(chuàng)建包c(diǎn)om.itheima.service,在包下創(chuàng)建Feign客戶端的接口,在該接口中聲明要調(diào)用的服務(wù),具體如文件4-8所示。4.2

OpenFeign入門(mén)案例9.創(chuàng)建服務(wù)消費(fèi)者的控制器類文件4-9ConsumerController.java源代碼在consumer模塊的java目錄下創(chuàng)建包c(diǎn)om.itheima.controller,在該包下創(chuàng)建名稱為ConsumerController的控制器類,并在該類中注入ProjectService對(duì)象,并通過(guò)該對(duì)象遠(yuǎn)程調(diào)用服務(wù)提供者所提供的方法,具體如文件4-9所示。4.2

OpenFeign入門(mén)案例10.創(chuàng)建服務(wù)消費(fèi)者的項(xiàng)目啟動(dòng)類文件4-10ConsumerApp.java源代碼在consumer模塊的java目錄下的com.itheima包下創(chuàng)建項(xiàng)目的啟動(dòng)類,并且在該啟動(dòng)類中使用@EnableFeignClients注解開(kāi)啟Feign客戶端功能,具體如文件4-10所示。4.2

OpenFeign入門(mén)案例11.測(cè)試服務(wù)調(diào)用效果依次啟動(dòng)Nacos服務(wù)端、ProviderApp、ConsumerApp,啟動(dòng)成功后,在瀏覽器中訪問(wèn)http://localhost:8002/consumer/嫦娥五號(hào)。OpenFeign工作原理4.34.3OpenFeign工作原理先定一個(gè)小目標(biāo)!

先定一個(gè)小目標(biāo)!了解OpenFeign工作原理,能夠簡(jiǎn)述OpenFeign實(shí)現(xiàn)遠(yuǎn)程服務(wù)調(diào)用的流程4.3OpenFeign工作原理OpenFeign實(shí)現(xiàn)遠(yuǎn)程服務(wù)調(diào)用的流程4.3OpenFeign工作原理1.OpeFeign包掃描原理查看@EnableFeignClients注解的源碼@EnableFeignClients注解中使用Spring框架的@Import注解導(dǎo)入了FeignClientsRegistrar類。程序啟動(dòng)時(shí),如果檢測(cè)到有@EnableFeignClients注解,則會(huì)掃描指定包下被@FeignClient注解修飾的接口。接下來(lái),從@EnableFeignClients注解入手,分析OpeFeign遠(yuǎn)程調(diào)用服務(wù)的工作原理。4.3OpenFeign工作原理1.OpeFeign包掃描原理FeignClientsRegistrar類實(shí)現(xiàn)了ImportBeanDefinitionRegistrar接口,在SpringBoot啟動(dòng)的過(guò)程中會(huì)調(diào)用FeignClientsRegistrar類中重寫(xiě)的registerBeanDefinitions()方法。publicvoidregisterBeanDefinitions(AnnotationMetadatametadata,

BeanDefinitionRegistryregistry){ this.registerDefaultConfiguration(metadata,registry); this.registerFeignClients(metadata,registry);}4.3OpenFeign工作原理1.OpeFeign包掃描原理查看registerFeignClients()方法的源碼獲取指定basePackages的所有候選組件,添加到candidateComponents集合。通過(guò)迭代器對(duì)象遍歷candidateComponents集合,找出其中被@FeignClient注解標(biāo)識(shí)的接口,將其注冊(cè)成BeanDefinition對(duì)象。接著調(diào)用registerFeignClient()方法。4.3OpenFeign工作原理1.OpeFeign包掃描原理查看registerFeignClient()方法的源碼處理@FeignClient注解中的屬性,如name、url、path等,并將其綁定到BeanDefinition中,最終轉(zhuǎn)換成FeignClientFactoryBean對(duì)象,其中FeignClientFactoryBean對(duì)象用于創(chuàng)建FeignCientBean。4.3OpenFeign工作原理2.OpenFeign動(dòng)態(tài)代理原理FeignClientFactoryBean對(duì)象用于來(lái)創(chuàng)建FeignCientBean,在創(chuàng)建FeignClientBean的過(guò)程中會(huì)生成標(biāo)注@FeignClient注解接口對(duì)應(yīng)的代理對(duì)象,其中registerFeignClient()方法中FeignClientFactoryBean對(duì)象調(diào)用的getObject()所返回的BeanDefinitionBuilder對(duì)象就是接口的動(dòng)態(tài)實(shí)現(xiàn)類。publicObjectgetObject(){ returnthis.getTarget();}4.3OpenFeign工作原理2.OpenFeign動(dòng)態(tài)代理原理查看getTarget()方法的源碼創(chuàng)建Feign客戶端對(duì)象時(shí),首先會(huì)解析FeignClient接口上各個(gè)方法級(jí)別的注解,比如遠(yuǎn)程接口的URL、接口請(qǐng)求方式(如Get、Post等)、請(qǐng)求參數(shù)等。然后將解析到的數(shù)據(jù)封裝成元數(shù)據(jù),生成對(duì)應(yīng)的方法級(jí)別的代理MethodHandler。接著使用Java的JDK原生的動(dòng)態(tài)代理,創(chuàng)建FeignClient接口的動(dòng)態(tài)代理Proxy對(duì)象,這個(gè)Proxy對(duì)象會(huì)添加到Spring容器中。4.3OpenFeign工作原理3.OpenFeign發(fā)送請(qǐng)求的原理在生成代理對(duì)象后,程序中調(diào)用Feign服務(wù)端接口對(duì)應(yīng)的方法時(shí),通過(guò)動(dòng)態(tài)代理對(duì)象的MethodHandler

組件來(lái)發(fā)送請(qǐng)求。處理代理對(duì)象方法調(diào)用的的入口在ReflectiveFeign類中的invoke()方法。查看invoke()方法的源碼從dispatch中獲取與當(dāng)前方法對(duì)應(yīng)的InvocationHandlerFactory.MethodHandler對(duì)象,并調(diào)用其invoke()方法執(zhí)行實(shí)際的請(qǐng)求操作。InvocationHandlerFactory.MethodHandler提供了兩個(gè)實(shí)現(xiàn)類用于處理代理對(duì)象方法調(diào)用的邏輯,分別為DefaultMethodHandler和SynchronousMethodHandle。默認(rèn)情況下,使用SynchronousMethodHandler來(lái)處理SpringMVC中的請(qǐng)求4.3OpenFeign工作原理3.OpenFeign發(fā)送請(qǐng)求的原理查看SynchronousMethodHandler重寫(xiě)的invoke()方法根據(jù)傳入的參數(shù)創(chuàng)建RequestTemplate對(duì)象,并獲取請(qǐng)求配置信息。循環(huán)調(diào)用executeAndDecode()方法執(zhí)行實(shí)際的請(qǐng)求操作并解析響應(yīng)結(jié)果。如果請(qǐng)求失敗,則根據(jù)Retryer的策略判斷是否繼續(xù)重試。executeAndDecode()方法方法會(huì)根據(jù)傳入的RequestTemplate對(duì)象構(gòu)造出一個(gè)Request對(duì)象,并使用FeignClient實(shí)例執(zhí)行該請(qǐng)求。4.3OpenFeign工作原理OpenFeign工作原理大致如下。(1)OpenFeign根據(jù)@EnableFeignClients注解掃描指定位置帶有@FeignClient注解的接口。(2)對(duì)應(yīng)的接口生成動(dòng)態(tài)代理對(duì)象,動(dòng)態(tài)代理對(duì)象中引用包含有接口方法的MethodHandler,MethodHandler里面又包含解析注解后的元數(shù)據(jù)。(3)發(fā)起請(qǐng)求時(shí),MethodHandler會(huì)生成一個(gè)Request,最后從服務(wù)列表中選取對(duì)應(yīng)的服務(wù),發(fā)起遠(yuǎn)程服務(wù)調(diào)用。OpenFeign常見(jiàn)配置4.44.4

OpenFeign常見(jiàn)配置隨著微服務(wù)架構(gòu)的流行和應(yīng)用程序的復(fù)雜性不斷增加,開(kāi)發(fā)人員需要更加高效地處理不同服務(wù)之間的通信。在使用OpenFeign時(shí),可能需要對(duì)其設(shè)置默認(rèn)配置之外的其他配置,以滿足特定的業(yè)務(wù)需求和性能要求,其中常見(jiàn)的配置有超時(shí)控制配置、重試機(jī)制配置、日志級(jí)別配置。從SpringCloud從2020版本開(kāi)始,OpenFeign的底層就不再使用Ribbon,而是采用了SpringWebFlux作為其底層通信框架。接下來(lái)基于SpringCloud2021.0.5版本對(duì)OpenFeign的這三種配置分別進(jìn)行講解。4.4.1

超時(shí)控制配置先定一個(gè)小目標(biāo)!

先定一個(gè)小目標(biāo)!掌握OpenFeign的超時(shí)控制配置,能夠使用自定義OpenFeign的超時(shí)控制4.4.1

超時(shí)控制配置建立連接所用的時(shí)間OpenFeign客戶端和服務(wù)端之間的連接時(shí)間默認(rèn)最大連接等待時(shí)間為10秒。feign.client.config.{default|servicename}.connectTimeout:指定OpenFeign客戶端和服務(wù)端建立連接最長(zhǎng)的連接等待時(shí)間。建立連接后從服務(wù)器讀取可用資源的時(shí)間默認(rèn)最大連接等待時(shí)間為60秒。feign.client.config.{default|servicename}.readTimeout:指定OpenFeign客戶端和服務(wù)端建立連接后從服務(wù)端讀取可用資源最大的等待時(shí)間。4.4.1

超時(shí)控制配置feign:client:config:default:connectTimeout:5000readTimeout:5000provider:connectTimeout:5000readTimeout:5000OpenFeign超時(shí)控制配置的示例。4.4.1

超時(shí)控制配置(1)修改服務(wù)提供方服務(wù)響應(yīng)時(shí)間文件4-11ProjectController.java源代碼修改ProjectController類中findProject()方法,在findProject()方法中返回?cái)?shù)據(jù)之前休眠6秒,模擬從服務(wù)端處理請(qǐng)求的響應(yīng)時(shí)間至少為6秒。修改后代碼如文件4-11所示。接下來(lái),基于OpenFeign的入門(mén)案例進(jìn)行超時(shí)控制的相關(guān)修改,演示OpenFeign的超時(shí)控制效果。4.4.1

超時(shí)控制配置(2)測(cè)試服務(wù)調(diào)用效果在瀏覽器中訪問(wèn)http://localhost:8002/consumer/東方紅一號(hào),在6秒多一些的時(shí)間后會(huì)顯示服務(wù)調(diào)用結(jié)果。4.4.1

超時(shí)控制配置(3)設(shè)置最長(zhǎng)的連接等待時(shí)間在consumer模塊的application.yml文件中設(shè)置最長(zhǎng)的連接等待時(shí)間,此處將建立連接最長(zhǎng)的連接等待時(shí)間和連接后從服務(wù)端讀取可用資源最大的等待時(shí)間都設(shè)置為5秒,具體如文件4-12所示。文件4-12application.yml源代碼4.4.1

超時(shí)控制配置(4)測(cè)試超時(shí)后的服務(wù)調(diào)用效果顯示服務(wù)調(diào)用結(jié)果。在瀏覽器中訪問(wèn)http://localhost:8002/consumer/東方紅一號(hào),等待5秒后頁(yè)面顯示服務(wù)調(diào)用結(jié)果。4.4.2

日志級(jí)別配置先定一個(gè)小目標(biāo)!

先定一個(gè)小目標(biāo)!掌握日志級(jí)別配置,能夠使用全局配置和局部配置兩種方式實(shí)現(xiàn)OpenFeign的日志級(jí)別配置4.4.2

日志級(jí)別配置SpringBoot項(xiàng)目中開(kāi)發(fā)人員可以在全局配置文件中通過(guò)logging.level屬性控制整個(gè)應(yīng)用程序中日志輸出的級(jí)別,但想根據(jù)不同的需求,進(jìn)一步查看使用OpenFeign時(shí)Feign客戶端的日志,可以通過(guò)配置OpenFeign中Feign客戶端的日志級(jí)別實(shí)現(xiàn)。通過(guò)設(shè)置Feign客戶端不同的日志級(jí)別可以控制輸出的日志記錄請(qǐng)求和響應(yīng)的信息,以方便調(diào)試和排查問(wèn)題。OpenFeign中Feign客戶端的日志的級(jí)別為NONE、BASIC、HEADERS和FULL。4.4.2

日志級(jí)別配置表示不記錄任何日志,是OpenFeign默認(rèn)日志級(jí)別,其性能最佳,適合用于生產(chǎn)環(huán)境。NONE在記錄BASIC級(jí)別的基礎(chǔ)上,記錄請(qǐng)求和響應(yīng)的header頭部信息。HEADERS僅記錄請(qǐng)求方法、URL、響應(yīng)狀態(tài)碼、執(zhí)行時(shí)間,適合用于生產(chǎn)環(huán)境追蹤問(wèn)題。BASIC記錄請(qǐng)求響應(yīng)的header、body和元數(shù)據(jù),適合用于開(kāi)發(fā)和測(cè)試環(huán)境定位問(wèn)題。FULLFeign客戶端的日志級(jí)別4.4.2

日志級(jí)別配置全局配置OpenFeign日志級(jí)別配置全局配置指的是配置的日志級(jí)別信息適用于調(diào)用所有的遠(yuǎn)程服務(wù)。局部配置局部配置指的是配置的日志級(jí)別信息進(jìn)適用于調(diào)用指定的遠(yuǎn)程服務(wù)。4.4.2

日志級(jí)別配置1.全局配置OpenFeign日志級(jí)別的全局配置可以通過(guò)配置類和配置文件兩種方法實(shí)現(xiàn),其中通過(guò)配置類的方式實(shí)現(xiàn)時(shí),只需在配置類中創(chuàng)建一個(gè)Logger.Level的對(duì)象交由Spring管理即可,其中Logger.Level對(duì)象可以通過(guò)Logger類中Level枚舉創(chuàng)建。@ConfigurationpublicclassOpenFeignConfig{@BeanpublicLogger.LevelfeignLoggerLevel(){returnLogger.Level.BASIC;}}4.4.2

日志級(jí)別配置1.全局配置通過(guò)配置文件的方式設(shè)置OpenFeign的全局日志級(jí)別,可以在application.yml或perties中通過(guò)feign.client.config.default.logger-level屬性指定。feign:client:config:default:logger-level:FULL4.4.2

日志級(jí)別配置2.局部配置通過(guò)配置類實(shí)現(xiàn)局部配置時(shí),需要在配置類中創(chuàng)建一個(gè)Logger.Level的對(duì)象交由Spring管理,但不需要使用@Configuration注解標(biāo)注,而是在指定的Feign接口的中,通過(guò)@FeignClient注解的configuration屬性指定。@FeignClient(name="provider",configuration=OpenFeignConfig.class)4.4.2

日志級(jí)別配置2.局部配置通過(guò)配置文件的方式設(shè)置OpenFeign的局部日志級(jí)別,可以在application.yml或perties中通過(guò)feign.client.config.{servicename}.logger-level屬性指定,其中{servicename}為服務(wù)名稱。feign:client:config:provider:logger-level:NONE4.4.2

日志級(jí)別配置由于SpringBoot默認(rèn)的應(yīng)用程序日志級(jí)別是INFO,而OpenFeign控制Feign客戶端的日志輸出級(jí)別是DEBUG級(jí)別,INFO級(jí)別是大于DEBUG級(jí)別的,所以默認(rèn)情況下DEBUG級(jí)別的Feign客戶端的日志信息不會(huì)進(jìn)行輸出。對(duì)此,在輸出Feign客戶端的日志信息之前,不管是全局配置還是局部配置,都需要先將OpenFeign接口的日志級(jí)別設(shè)置成DEBUG級(jí)別。logging:level:com.itheima.service:DEBUG4.4.2

日志級(jí)別配置接下來(lái),基于OpenFeign的入門(mén)案例進(jìn)行日志記錄的相關(guān)修改,演示OpenFeign中不同日志級(jí)別的輸出效果。(1)在consumer模塊的application.yml文件中,設(shè)置FeignCLient的日志級(jí)別,具體如文件4-13所示。文件4-13application.yml源代碼4.4.2

日志級(jí)別配置(2)將provider模塊中ProjectController類線程休眠的代碼進(jìn)行注釋,啟動(dòng)Nacos和項(xiàng)目后,在瀏覽器中訪問(wèn)http://localhost:8002/consumer/CASC,此時(shí)IDEA中ConsumerApp的控制臺(tái)輸出對(duì)應(yīng)的日志信息。4.4.2

日志級(jí)別配置為了查看不同日志級(jí)別的信息,以及體驗(yàn)通過(guò)配置類設(shè)置日志級(jí)別的效果,接下來(lái)將OpenFeign中Feign客戶端的日志級(jí)別修改為BASIC進(jìn)行演示。(1)在consumer模塊中創(chuàng)建包c(diǎn)om.itheima.config

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論