程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

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

发布于2021-05-29 20:51     阅读(644)     评论(0)     点赞(17)     收藏(2)


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/”)

在这里插入图片描述



所属网站分类: 技术文章 > 博客

作者:天花灯

链接:http://www.javaheidong.com/blog/article/207341/39a11b047d0e0af425e8/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

17 0
收藏该文
已收藏

评论内容:(最多支持255个字符)