天天看点

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