专栏首页每天学Java声明式服务调用-Feign

声明式服务调用-Feign

简介

博主在昨天的文章中,提及到项目中选用Eureka作为服务的注册中心,那么今天就应该是开始进行服务的调用, 即认证平台调用数据服务。在之前的文章中我都是很模糊的描述过业务的过程,今天就再叙述一下,也顺便捋一捋自己的业务逻辑。

博主在毕业的时候写有一个微信小程序,小程序所有的接口都写在一个项目中,但是现在因为要开始写PC端, 以及个人项目汇总,那么这一套接口就不能共用了,考虑到后续项目案例汇总比较多,如果按照小程序的路来走, 那么显然有很多重复的工作,于是我需要开始对业务进行分离,也就是拆分,个人的计划如下:

第一步搭建统一的认证平台(可以理解为SSO),然后搭建数据提供服务

第二步搭建注册中心(也就是昨天所描述的Eureka)

第三步搭建其他功能模块的项目,比如文章,题库等等

第四步将小程序接口更换为新的接口

之后的工作就是对PC端和项目的案例的开展了。

今天的工作仍然属于第一步,开始服务间的调用,在SpringCloud的服务调用方案中共有两种:第一种:Ribbon+RestTemplate, 第二种:Feign

博主这里选用Feign,原因如下:Feign是在Ribbon的基础上进行了一次改进,他基于Ribbon,但是使用更加方便, Ribbon的原理可以理解为使用HttpClient 或 RestTemplate 模拟http请求去调用提供的服务,而Feign就封装了调用的步骤, 只需要我们配置相应的注解即可。

实现

服务的提供方:

依赖同昨日项目没有区别,只需要应用注册到Eureka上,然后只需要提供一个Rest接口即可,如下图

服务调用方:

调用方就稍微复杂一下,首先我们需要引入Feign的依赖

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

然后注解开启Feign,这一步我们需要在启动类上增加注解@EnableFeignClients

@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
public class SsoApplication {
    public static void main(String[] args) {
        SpringApplication.run(SsoApplication.class, args);
    }
}

调用服务,我们可以写一个接口适配提供的服务。

@FeignClient(name = "baseService")
public interface UserServiceAdapt {
    @RequestMapping(method = RequestMethod.POST, value = "/base/getUserInfoByOpenid")
    UserVO getUserInfoByOpenid(String token);
}

类的上方要指定提供服务方名称,也就是提供方的配置文件里面的spring.application.name。然后映射中的value要对应到Rest接口路径。

最后一步就是调用了,如下图:

本文分享自微信公众号 - 每天学Java(gh_fddfb9d03324),作者:每天学Java

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java底层-HotSpot

    在前面几节我们聊到,Javac编译器将java文件编译为class文件后,由JVM将字节码转为与机器适配的机器码进行执行, 这里我们说的JVM实际上是JVM实例...

    每天学Java
  • 高精度运算

    在写Java代码时候,我们其实很少去考虑高精度运算,即使遇到无法避免高精度的计算问题也不会太烦恼,因为有大整数类BigInteger以及BigDecimal工具...

    每天学Java
  • Spring Security:安全访问控制

    “ 在前面的两篇文章中,说了如何使用Spring Boot搭建Security项目以及实现自定义登录认证,今天就拿一个具体的前后端分离项目来看一下安全访问的控制...

    每天学Java
  • SpringCloud微服务项目实战 - 微服务调用详解(附面试题)

    今天继续SpringCloud微服务项目实战系列文章,前面的文章已经说了微服务的服务注册与发现,现在接着上一篇的话题,说说微服务之间的调用。在实战之前,我们还是...

    攻城狮的那点事
  • 面试题:Ribbon与Feign的区别是什么?

    Ribbon添加maven依赖 spring-starter-ribbon 使用@RibbonClient(value="服务名称") 使用RestTempla...

    用户1263954
  • JPEG文件格式解析(一) Exif 与 JFIF

    而我们通常说的JPEG指的是以JPEG格式压缩的图片(即文件后缀为.jpeg .jpe )。经过JPEG重新编码的图片,文件压缩率可以达到90%以上,而且图片本...

    天天P图攻城狮
  • 技术分享 | 是谁删了表?

    爱可生 DBA 团队成员,负责项目数据库日常问题处理及公司 DMP 平台问题处理,对数据库有强烈的兴趣。认为不会游泳的厨师绝不是一个好数据库工程师。

    爱可生开源社区
  • 虚拟机安装win10系统

    因为要练习sql注入,而手工注入对我来说是不可能的,因此要用到一些如萝卜头、sqlmap的工具,但是听大佬们说这些工具都不是那么安全,于是决定装个win10虚拟...

    宸寰客
  • mac搭建web环境

    在centos上有yum,ubuntu上有apt,而mac则是brew。这个并不是内置的。需要在终端执行命令进行安装。命令如下:

    魔王卷子
  • 什么是微服务?

    在介绍微服务时,首先得先理解什么是微服务,顾名思义,微服务得从两个方面去理解,什么是"微"、什么是"服务", 微 狭义来讲就是体积小、著名的"2 pizza 团...

    芋道源码

扫码关注云+社区

领取腾讯云代金券