天天看點

SpringBoot簡單內建OpenFeign問題步驟測試總結參考:

問題

在SpringBoot中簡單內建Feign,不想使用Rest Temple了。

步驟

Maven

<properties>
        <spring.cloud-version>2022.0.1</spring.cloud-version>
    </properties>
<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>
           

application.yml

logging:
  level:
    com:
      xxx:
        xxx:
          xxx:
            xxxxClient: DEBUG
spring:
  cloud:
    openfeign:
      autoconfiguration:
        jackson:
          enabled: true
      okhttp:
        enabled: true
      client:
        config:
          default:
            connectTimeout: 5000
            readTimeout: 5000
            loggerLevel: full
          xxxxClient:
            url: https://api.xxxx.xxxx.com
           

這裡啟用了jackson,作為feign的序列化和反序列化解析器;啟用了okhttp,預設是沒有啟用的;連接配接等待逾時時間5秒;讀取連接配接逾時時間5秒;日志全部記錄下來。xxxxClient為feign中被定義用戶端名稱。

注意:OpenFeign

loggerLevel

值,依賴Spring的日志配置,即

logging.level.com.xxx.xxx.xxx.xxxxClient

Spring

Application.java

@SpringBootApplication
@EnableFeignClients
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}


           

xxxxClient.java

@FeignClient("xxxxClient")
public interface xxxxClient {

    @GetMapping(path = "/demo/${xxx.id}")
    ResVo demoEndpoint();
}
           

這裡主要就是一個Get請求,調用遠端服務。注意:

@FeignClient("xxxxClient")

裡面的用戶端名稱,必須與application.yml檔案中儲存一緻;還有一個點值得關注就是請求路徑中的

${xxx.id}

是讀取配置檔案中的配置的相關值,類似如下:

xxx:
	id: 你的配置值
           

測試

下面是在Spring中嘗試使用feign的日志輸出:

SpringBoot簡單內建OpenFeign問題步驟測試總結參考:

總結

OpenFeign相比RestTemplate,還是少關心一些事情,例如:不太操心逾時的實作,而且,更加容易解決Service的概念。OpenFeign與RestTemplate的對比有點像JdbcTemplate與MyBaits的對比。

參考:

  • 1.3. Timeout Handling
  • Appendix A: Common application properties
  • Feign Logging Configuration