乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Feign —— SpringCloud(六)

       印度阿三17 2020-04-14

      什么是Feign?

        Feign可以把Rest的請求進行隱藏,偽裝成類似SpringMVC的Controller一樣,不需要自己拼接Url,拼接參數(shù)等操作,都交給Feign去做。

        Feign是Netflix開發(fā)的聲明式、模板化的Http客戶端,其靈感來自Retrofit、JAXRS-2.0以及WebSocket。

        Feign可以幫助我們更加便捷、優(yōu)雅地調(diào)用HttpApi。

        SpringCloud對Feign進行了增強,使Feign支持了SpringMVC注解,并整合了Ribbon和Eureka,從而讓Feign的使用更加方便。

      ?

      初步使用Feign

      導入依賴

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

      ?

      開啟Feign功能

        添加注解,開啟Feign功能。

      @SpringCloudApplication
      @EnableFeignClients // 開啟feign客戶端
      public class ItcastServiceConsumerApplication {
          
          public static void main(String[] args) {
              SpringApplication.run(ItcastServiceConsumerApplication.class, args);
          }
      }

        刪除RestTemplate:Feign已經(jīng)自動繼承了Ribbon負載均衡的RestTemplate。所以,此處不需要再注冊RestTemplate。

      ?

      Feign的客戶端

      @FeignClient(value = "service-provider") // 標注該類是一個feign接口
      public interface UserClient {
      
          @GetMapping("user/{id}")
          User queryById(@PathVariable("id") Long id);
      }

        這是一個接口,F(xiàn)eign會通過動態(tài)代理,幫我們生成實現(xiàn)類。這點跟Mybatis的mapper很像。

        @FeignClient,聲明這是一個Feign客戶端,類似@Mapper注解。同時通過value屬性指定服務名稱。

        接口中的定義方法,完全采用SpringMVC的注解,F(xiàn)eign會根據(jù)注解幫我們生成URL,并訪問獲取結(jié)果。

      @Controller
      @RequestMapping("consumer/user")
      public class UserController {
      
          @Autowired
          private UserClient userClient;
      
          @GetMapping
          @ResponseBody
          public User queryUserById(@RequestParam("id") Long id){
              User user = this.userClient.queryUserById(id);
              return user;
          }
      
      }

      ?

      負載均衡

        Feign中本身已經(jīng)集成了Ribbon依賴和自動配置。

        因此不需要額外引入依賴,也不需要再注冊RestTemplate對象。

      ?

      Hystrix支持

        Feign默認也有對Hystrix的繼承。

        默認情況是關(guān)閉的,需要通過下面的參數(shù)來開啟:

      feign:
        hystrix:
          enabled: true # 開啟Feign的熔斷功能

      ?

      請求壓縮

        Spring Cloud Feign支持對請求和響應進行GZIP壓縮,以減少通信過程中性能損耗。

        通過下面的參數(shù)即可開啟請求和響應的壓縮功能:

      feign:
        compression:
          request:
            enabled: true # 開啟請求壓縮
          response:
            enabled: true # 開啟響應壓縮  

        同時,也可以對請求的數(shù)據(jù)類型,以及觸發(fā)壓縮的大小下限進行設置:

      feign:
        compression:
          request:
            enabled: true # 開啟請求壓縮
            mime-types: text/html,application/xml,application/json # 設置壓縮的數(shù)據(jù)類型
            min-request-size: 2048 # 設置觸發(fā)壓縮的大小下限

      ?

      日志級別

        通過 logging.level.xx=debug 設置日志級別。

        這個對Feign客戶端不會產(chǎn)生效果,因為@FeignClient注解修改的客戶端在被代理時,都會創(chuàng)建一個新的Feign.Logger實例。

        需要額外指定這個日志的級別。

      logging:
        level:
          cn.itcast: debug
      @Configuration
      public class FeignLogConfiguration {
      
          @Bean
          Logger.Level feignLoggerLevel(){
              return Logger.Level.FULL;
          }
      }

        NONE:不記錄任何日志信息,默認值。

        BASIC:僅記錄請求的方法,URL以及響應狀態(tài)碼和執(zhí)行時間。

        HEADERS:在BASIC的基礎(chǔ)上,額外記錄了請求和響應的頭信息。

        FULL:記錄所有請求和響應的明細,包括頭信息、請求體,元數(shù)據(jù)。

      ?

      FeignClient中指定配置類

      @FeignClient(value = "service-privider", fallback = UserFeignClientFallback.class, configuration = FeignConfig.class)
      public interface UserFeignClient {
          @GetMapping("/user/{id}")
          User queryUserById(@PathVariable("id") Long id);
      }

      ?

      來源:https://www./content-4-676051.html

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多