SpringBoot之使用Feign实现微服务间的交互
作者:JianYang100
准备工作
先看看我们已经构建好的两个项目
项目 | 端口 | |
eureka-pass | 7200 | 服务发现与注册中心 |
user | 7101 | 微服务:用户模块 |
因为现在要演示微服务与微服务之间的交互,而目前只有一个user微服务注册到eureka-pass,所以我们至少要再建一个微服务来进行演示。
新建项目的过程就不再演示了,跟建立user微服务类似,需要了解的可以翻看之前的文章。
下面只贴出application.yml的代码
application.yml
server: port: 7102 # 端口 spring: application: name: order # 注册到Eureka Server显示的应用名称 eureka: client: serviceUrl: defaultZone: http://admin:admin135@localhost:7200/eureka/ instance: prefer-ip-address: true #将自己的IP注册到Eureka Server instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${server.port} #:${random.long(1,100)}
新建成功后项目列表如下:
项目 | 端口 | |
eureka-pass | 7200 | 服务发现与注册中心 |
user | 7101 | 微服务:用户模块 |
order | 7102 | 微服务:订单模块 |
依次启动eureka-pass、user、order 3个项目,启动成功后,访问:http://localhost:7200,输入账号密码(账号:admin 密码:admin135 上一节设置的),出现如下页面:
列表里面出现user和order两个微服务,表示两个微服务已经成功注册到eureka!一切准备就绪,我们可以开始接入Feign了!
接入Feign
假设有这样的场景:订单模块(order)需要获取某个订单中用户的详细信息,这时候订单模块(order)就必须请求用户模块(user)中的接口。
针对上述场景,实现方式之一就是把Feign整合进 订单模块(order),步骤如下:
1、用户模块(user)增加一个控制器,并编写一个接口,以供订单模块调用
2、订单模块(order)的pom中增加Feign依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
3、订单模块(order)新增一个接口,并添加@FeignClient注解,如图
代码中value的值是指向用户模块(user)的路径,method表示请求方式
4、订单模块(order)启动类增加 @EnableFeignClients注解,如下图
5、订单模块(order)增加一个控制器,并 编写一个接口,接口调用User模块的方法,代码如下:
package cn.laocheng.user.controller; import cn.laocheng.user.feignClient.IUserFeignClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class TestController { @Autowired IUserFeignClient userFeignClient; @GetMapping("/getInfo") public String getInfo(){ String Str= userFeignClient.getInfo(); return "调用User模块的接口:"+Str; } }
6、测试
访问:http://localhost:7102/getInfo
浏览器显示:
总结
以上实现了feign的基本使用过程,我们在order微服务里使用feign调用了user微服务一个无参数的GET请求。
到此这篇关于SpringBoot之使用Feign实现微服务间的交互的文章就介绍到这了,更多相关使用Feign实现微服务间的交互内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!