springCloud之集成Feign

Feign是什么?

  • Feign是Netflix开发的一款声明式服务调用组件
  • Feign可以帮助我们更快捷、优雅地调用HTTP API。
  • Feign 是 Spring Cloud Netflix 模块的子模块,它是 Spring Cloud 对 Netflix Feign 的二次封装,主要负责 Spring Cloud 的服务调用功能。

SpringCloud 集成Feign

  1. 搭建Eureka Client : springCloud之Eureka搭建 - 楼上有只喵 (pyr9.github.io)

  2. 引入依赖

    1
    implementation 'org.springframework.cloud:spring-cloud-starter-openfeign'
  3. 修改application.properties

    1
    2
    3
    4
    5
    6
    7
    server.port=8085
    spring.application.name: micro-weather-eureka-client-feign
    eureka.client.serviceUrl.defaultZone: http://localhost:8761//eureka/
    # 连接的超时时间
    feign.client.config.feignName.connectTimeout: 5000
    # 读数据的超时时间
    feign.client.config.feignName.readTimeout: 5000
  4. 创建一个接口,用FeignClient注解,指明需要调用的服务名和rest接口

    1
    2
    3
    4
    5
    @FeignClient("micro-weather-city-eureka")
    public interface CityClient {
    @RequestMapping("/cities")
    String listCity();
    }
  5. 修改启动类

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
       package com.pyr.spring.cloud.weather;

    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    import org.springframework.cloud.openfeign.EnableFeignClients;

    @SpringBootApplication
    @EnableDiscoveryClient
    @EnableFeignClients
    public class Application {

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


    6. 创建一个RestClientController来实现对Feign客户端的调用

    ```java
    package com.pyr.spring.cloud.weather.controller;

    import com.pyr.spring.cloud.weather.service.CityClient;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;

    @RestController
    public class CityController {
    @Autowired
    private CityClient cityClient;

    @RequestMapping("/cities")
    public String listCity(){
    return cityClient.listCity();
    }
    }
  6. 查看euraka服务端,可以看到该客户端注册成功,访问[localhost:8085/cities,可以获取到指定服务接口的返回

    image-20230228232728757


springCloud之集成Feign
http://example.com/springCloud之Feign搭建/
作者
Panyurou
发布于
2022年7月18日
许可协议