Spring Cloud 在 Feign 的基础上做了扩展,可以让 Feign 支持 Spring MVC 的注解来调用。原生的
Feign 是不支持 Spring MVC 注解的,如果你想在 Spring Cloud 中使用原生的注解方式来定义客户端也是
可以的,通过配置契约来改变这个配置,Spring Cloud 中默认的是 SpringMvcContract。

修改契约配置,支持Feign原生的注解:

  1. /**
  2. * 修改契约配置,支持Feign原生的注解
  3. * @return
  4. */
  5. @Bean
  6. public Contract feignContract() {
  7. return new Contract.Default();
  8. }

注意:修改契约配置后,OrderFeignService 不再支持springmvc的注解,需要使用Feign原生的注解

OrderFeignService 中配置使用Feign原生的注解

  1. @FeignClient(value = "mall-order",path = "/order")
  2. public interface OrderFeignService {
  3. @RequestLine("GET /findOrderByUserId/{userId}")
  4. public R findOrderByUserId(@Param("userId") Integer userId);
  5. }

补充,也可以通过yml配置契约

  1. feign:
  2. client:
  3. config:
  4. mall-order: #对应微服务
  5. loggerLevel: FULL
  6. contract: feign.Contract.Default #指定Feign原生注解契约配置