SpringCloud------Feign的使用

Posted 玉天恒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringCloud------Feign的使用相关的知识,希望对你有一定的参考价值。

1.官方文档

https://cloud.spring.io/spring-cloud-static/spring-cloud-openfeign/2.2.2.RELEASE/reference/html/

 

2.添加依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

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

 

3.添加启动类注解

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

@SpringBootApplication
//@MapperScan("cn.ytheng.order_service")
@EnableFeignClients
public class OrderServiceApplication {

    public static void main(String[] args) {

        SpringApplication.run(OrderServiceApplication.class, args);
    }

}

 

4.添加Feign接口

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * 
 * 商品服务客户端
 * product-service: 调用服务名称,即spring.application.name
 * 
 */
@FeignClient(name = "product-service")
public interface ProductClient {

    @GetMapping("/api/v1/product/find")
    String getById(@RequestParam("id") int id);

}

 

5.添加Controller

import cn.theng.order_service.service.ProductClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api/v1/order")
public class ProductOrderController {

    @Autowired
    private ProductClient productClient;

    @PostMapping("/test2")
    public Object test2(@RequestParam("product_id") int productId) {

        String product = productClient.getById(productId);

        return "success";
    }
}

 

6.添加application.yml配置

server:
  port: 8781
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

spring:
  application:
    name: order-service

#设置调用服务超时时间
#product-service为服务名称,也可以设置为默认值default
feign:
client:
config:
product-service:
connectTimeout: 5000
readTimeout: 11000

 

7.访问地址

 

以上是关于SpringCloud------Feign的使用的主要内容,如果未能解决你的问题,请参考以下文章

SpringCloud Feign 之 Fallback初体验

SpringCloud------Feign的使用

SpringCloud Feign 参数问题

分享一个 SpringCloud Feign 中所埋藏的坑

springCloud feign使用/优化总结

SpringCloud---Feign上传下载详解