日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

SpringCloud組件之Feign遠程調用

作者:wl_Honest 更新時間: 2022-10-14 編程語言

上篇文章運用SpringCloud組件Eureka簡單寫了個服務注冊Demo,并用RestTemplate實現了服務之間的遠程調用,這篇文章則用到SpringCloud的另一個組件Feign來實現更方便更優雅的遠程調用。

首先引入maven依賴

<!-- feign客戶端 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

接著需要在啟動類上加上@EnableFeignClients注解,開啟遠程調用功能

package com.wl.order;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;

/**
 * @author wl
 * @date 2022/3/4 14:22
 */
@EnableFeignClients
@MapperScan("com.wl.order.mapper")
@SpringBootApplication
public class OrderApplication {
    public static void main(String[] args) {
        SpringApplication.run(OrderApplication.class, args);
        System.out.println("o(* ̄▽ ̄*)o啟動成功!!!(〃'▽'〃)");
    }
}

然后創建調用用戶模塊的接口

package com.wl.order.clients;

import com.wl.order.config.DefaultFeignConfiguration;
import com.wl.user.entiry.User;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

/**
 * @author wl
 * @date 2022/3/6 11:38
 */
@FeignClient(value = "user-service", configuration = DefaultFeignConfiguration.class)
public interface UserServiceClient {

    @GetMapping("/user/{id}")
    User getById(@PathVariable("id") Long id);
}

@FeignClient標簽的常用屬性如下:

name:指定FeignClient的名稱,如果項目使用了Ribbon,name屬性會作為微服務的名稱,用于服務發現

vaule和name 其實是一個屬性
url: url一般用于調試,可以手動指定@FeignClient調用的地址
decode404:當發生http 404錯誤時,如果該字段位true,會調用decoder進行解碼,否則拋出FeignException
configuration: Feign配置類,可以自定義Feign的Encoder、Decoder、LogLevel、Contract
fallback: 定義容錯的處理類,當調用遠程接口失敗或超時時,會調用對應接口的容錯邏輯,fallback指定的類必須實現@FeignClient標記的接口
fallbackFactory: 工廠類,用于生成fallback類示例,通過這個屬性我們可以實現每個接口通用的容錯邏輯,減少重復的代碼
path: 定義當前FeignClient的統一前綴,當我們項目中配置了server.context-path,server.servlet-path時使用

其中DefaultFeignConfiguration這個類里定義了feign的日志級別,級別可根據自身情況定義,一般BASIC即可。

package com.wl.order.config;

import feign.Logger;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author wl
 * @date 2022/3/6 13:57
 */
@Configuration
public class DefaultFeignConfiguration {

    @Bean
    public Logger.Level loggerLevel() {
        return Logger.Level.BASIC;
    }
}

本來參考黑馬程序員的視頻以為寫到這里就可以在控制臺看到feign的日志了,但結果卻不是,百度之后發現還要在配置文件里加上這一段

## 將Feign接口的日志級別設置成DEBUG,因為Feign的logger.Level只對DEBUG做出響應
logging:
  level:
    com.wl.order.clients.UserServiceClient: debug

到此,每次遠程調用即可輸出日志查看調用情況了

?

原文鏈接:https://blog.csdn.net/wl_Honest/article/details/123309949

欄目分類
最近更新