全栈工程师_java全栈工程师_全栈开发者学习经验总结

  • 首页
  • 开发工具
    • 软件安装
    • 软件使用
  • 前端
    • Ionic
    • Android
    • Capacitor
    • Angular
    • Vue
    • 苹果开发者账号
  • 后端
    • Java
    • Python
    • MyBatis
    • Spring
    • SpringBoot
    • SpringMVC
    • SpringCloud
  • 服务器
    • Linux
    • MySQL
    • Nginx
    • Tomcat
    • Docker
  • 其他
    • 生活碎片
    • 报错专区
  • 我
lipsuper
专注产出高质量原创手打文章
  1. 首页
  2. 后端
  3. SpringCloud
  4. 正文

SpringCloud使用OpenFeign进行远程调用的整体思路

2020年11月3日 503点热度 0人点赞 0条评论

Feign是一款是声明式的http客户端,它Netflix 公司产品,但是由于它停止更新,于是SpringCloud官方使用OpenFeign来代替它。接下来展示各个微服务之间使用OpenFeign来进行远程调用的具体操作方法。

操作步骤

一、给调用者添加依赖

假设有两个微服务A和B,它们两个都已经在注册中心上线,然后A去调用B的一个接口。A是调用者,B是被调用者。

我们找到调用者A的pom.xml文件,添加 如下依赖:

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

二、在调用者A中编写接口,告诉SpringCloud这个接口需要调用远程服务

编写一个接口类,添加@FeignClient("lipsuper-awsome")注解,然后直接把B服务中需要调用的方法名以及RequestMapping的完整路径拷贝过来。实例代码如下:

@FeignClient("lipsuper-awsome")
public interface LipsuperFeignService {
​
    @RequestMapping("lipsuper/books/list")
    public R books();
}
​
// lipsuper-awsome是微服务B在注册中心注册的服务名
// books方法是B微服务中的某一个Controller中的

三、在调用者A的启动类上添加注解,开启远程调用功能

找到微服务A的启动类,添加注解@EnableFeignClients(basePackages = "com.lipsuper.awsome.feign")来开启远程调用功能。括号里的basePackages是指上面的LipsuperFeignService接口所在包的全限定名。

示例代码:

@EnableFeignClients(basePackages = "com.lipsuper.awsome.feign")
@EnableDiscoveryClient
@SpringBootApplication
public class LipsuperAwsomeApplication {
​
    public static void main(String[] args) {
        SpringApplication.run(LipsuperAwsomeApplication.class, args);
    }
​
}

四、在调用者A中使用远程调用

在调用这A中具体的使用代码示例:

...
    
@Autowired
private LipsuperFeignService lipsuperFeignService;
​
​
@RequestMapping("/mybook")
public R mybook() {
    ...
    R books = lipsuperFeignService.books();
    ...
}

也就是直接注入上面步骤二里面写的接口,直接进行方法调用就可以了。

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 保姆级指导
最后更新:2020年11月3日

lipsuper

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

取消回复

COPYRIGHT © 2021 lipsuper.com. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

渝ICP备2021004735号-1

渝公网安备 50011202502306号