写点什么

Fegin 的解析

作者:卢卡多多
  • 2022 年 6 月 22 日
  • 本文字数:1068 字

    阅读完需:约 4 分钟

Fegin的解析

一、Feign

基本概念

  • Feign 是 Netflix 开发的声明式、模板化的 HTTP 客户端, Feign 可以帮助我们更快捷、优雅地调用 HTTP API。\

  • Feign 支持多种注解,例如 Feign 自带的注解或者 JAX-RS 注解等。\

  • Spring Cloud 对 Feign 进行了增强,使 Feign 支持了 Spring MVC 注解,并整合了 Ribbon 和 Eureka,从而让 Feign 的使用更加方便。\

  • Spring Cloud Feign 是基于 Netflix feign 实现,整合了 Spring Cloud Ribbon 和 Spring Cloud Hystrix,除了提供这两者的强大功能外,还提供了一种声明式的 Web 服务客户端定义的方式。\

  • Spring Cloud Feign 帮助我们定义和实现依赖服务接口的定义。在 Spring Cloud feign 的实现下,只需要创建一个接口并用注解方式配置它,即可完成服务提供方的接口绑定,简化了在使用 Spring Cloud Ribbon 时自行封装服务调用客户端的开发量。

二、实现服务调用

1、在调用端添加 pom 依赖

在 statistics 微服务中添加


可以删除之前添加的 ribbon 依赖,因为 openfeign 中封装了 ribbon 负载均衡


<!--服务调用-->
复制代码


<dependency>
复制代码


    <groupId>org.springframework.cloud</groupId>
复制代码


    <artifactId>spring-cloud-starter-openfeign</artifactId>
复制代码


</dependency>
复制代码

2、启动类添加注解

@EnableFeignClients
复制代码

3、创建远程调用包和接口

创建 client 包和 UcenterClient 接口


@FeignClient 注解用于指定从哪个服务中调用功能 ,名称与被调用的服务名保持一致。


@GetMapping 注解用于对被调用的微服务进行地址映射。


@PathVariable 注解一定要指定参数名称,否则出错


@Component 注解防止,在其他位置注入 UcenterClient 时 idea 报错


package com.guli.statistics.client;
复制代码


@Component
复制代码


@FeignClient("guli-ucenter")
复制代码


public interface UcenterClient {
复制代码


 
复制代码


    /**
复制代码


     * 注意:一定要写成 @PathVariable("day"),圆括号中的"day"不能少
复制代码


     * @param day
复制代码


     * @return
复制代码


     */
复制代码


    @GetMapping(value = "/admin/ucenter/member/count-register/{day}")
复制代码


    public R registerCount(@PathVariable("day") String day);
复制代码


}
复制代码

4、调用微服务

修改 DailyService 中的 createStatisticsByDay 方法,调用 client 中的接口


实现


@Autowired
复制代码


private UcenterClient ucenterClient;
复制代码


 
复制代码


@Transactional(rollbackFor = Exception.class)
复制代码


@Override
复制代码


public void createStatisticsByDay(String day) {
复制代码


 
复制代码


    //删除已存在的统计对象
复制代码


    ...
复制代码


 
复制代码


    //获取统计信息
复制代码


    Integer registerNum = (Integer) ucenterClient.registerCount(day).getData().get("countRegister");
复制代码


    ...
复制代码


 
复制代码


    //创建统计对象
复制代码


    ...
复制代码


}
复制代码

5、Swagger 测试

启动 eureka、ucenter、statistics 三个微服务


在 swagger 中测试


\

三、测试负载均衡

发布于: 刚刚阅读数: 3
用户头像

卢卡多多

关注

努力寻找生活答案的旅途者 2020.04.12 加入

公众号:卢卡多多,欢迎一起交流学习 2021年度优质创作者

评论

发布
暂无评论
Fegin的解析_OpenFegin_卢卡多多_InfoQ写作社区