(三)SpringCloud实战之openfeign服务调用

本文介绍了如何在Spring Cloud中使用OpenFeign进行服务间的调用。首先,项目结构包括配置中心、注册中心、服务A(学生服务)和服务B(课程成绩服务)。接着,详细讲解了调用端(服务A)需要引入spring-cloud-starter-openfeign依赖,然后通过编写@FeignClient注解的接口来实现远程调用。在没有注册中心的情况下,可以通过在@FeignClient中直接配置url来实现调用。最后,文章提到了未使用注册中心时可能出现的找不到服务的问题及其解决方案。

feign是依赖注册中心调用的其他服务。
如果A服务调用B服务,A就是在注册中心找B服务,找到了才知道地址,才能调用接口。(也可以不用注册中心访问到B服务,需要在@feignclient的注解后面配置url,下面第四大点详细讲)

一、项目结构

配置中心
注册中心
服务A:学生服务
服务B:课程成绩服务
在这里插入图片描述
下面我们要实现:
服务A:学生服务 调用 服务B:课程服务的接口

二、引入依赖

A服务是调用端,需要引入依赖
B服务是被调用端,可以不用引依赖

在引入依赖的时候发现,两个依赖:spring-cloud-starter-feign和spring-cloud-starter-openfeign,这里推荐使用openfeign。
下面是他俩的区别

openfeign 和 feign

openfeign 是 spring cloud 在 feign 的基础上支持 spring mvc注解 ,如 @RequestMapping 等等,OpenFeign 的@FeignClient 可以解析Spring MVC 的 @RequestMapping注解下的接口,并通过动态代理的方式生产实现类 ,实现类中做负载均衡并且 低耦合调用其他服务。
在这里插入图片描述
在这里插入图片描述
推荐使用openfeign

引入依赖

<!--feign客户端(调用端)-->
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-openfeign -->
  <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-openfeign</artifactId>
  </dependency>

这里没有写版本,是因为父工程引入了spring-cloud-dependencies依赖声明

三、调用端(A服务)写调用接口

3.1、编写远程调用接口:

接口FCourseService(习惯性大写F开头,表示这是Feign远程调用接口)

在这里插入图片描述

3.2、启动程序加注解

注解:@EnableFeignClients
在这里插入图片描述

3.3、使用远程调用接口

在需要使用的地方:
1、@Autowired注入FCourseService
2、使用fCourseService接口方法
在这里插入图片描述

到这里,远程调用环境全部准备好了。
启动A服务、B服务、注册中心、配置中心。
打开浏览器:http://localhost:8011/student/selectAllCourse
(我的A服务(学生服务)是运行在8011端口)
得到结果:
在这里插入图片描述
feign远程调用成功!!!!

四、扩展(不使用eureka注册中心来实现feign远程调用)

4.1、如果没有注册中心:

报错显示:Load balancer does not have available server for client: course-service(找不到服务)
在这里插入图片描述

4.3、实现

只需要在远程调用接口的@FeignClient后面的括号里面加上属性url就可以了:
@FeignClient(name = “course-service”,url = “http://localhost:8011/”)

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值