解决方案:微服务远程调用组件Feign的使用详解
优采云 发布时间: 2022-11-25 18:38解决方案:微服务远程调用组件Feign的使用详解
一、总结
我们知道目前最火、技术含量最高的技术就是SpringCloud微服务,那么今天一哥就带大家了解一下微服务的核心组件之一,Feign的基本使用及其工作机制。
二、Feign简介 一、概念
在学习如何使用Feign之前,我们先来了解一下什么是Feign。
Feign 是 Netflix 开发的声明式(目前由 Spring 维护)和模板化的 HTTP 客户端。Feign可以帮助我们更快速优雅的调用HTTP Api。
简单来说,Feign是一个远程服务调用的框架/工具,可以让开发者以更低耦合、更少代码、更快、更兼容的方式进行远程服务调用。
2.功能
了解了这些基本概念之后,接下来小编就带大家看看Feign组件是如何实现远程接口调用的。话不多说,我们直接上代码。
三、服务提供者 1、添加依赖
首先我们在父POM文件中添加核心依赖,如下:
org.springframework.cloud
spring-cloud-dependencies
${spring-cloud.version}
pom
import
com.alibaba.cloud
spring-cloud-alibaba-dependencies
${spring-cloud-alibaba-dependencies.version}
pom
import
然后在子POM文件中添加依赖如下:
org.springframework.cloud
spring-cloud-starter-openfeign
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
2.配置文件
在 application.yml 文件中添加如下配置:
server:
port: 8090
spring:
application:
name: nacos-feign-example
cloud:
nacos:
discovery:
server-addr: 112.74.42.138:8848
3、创业班
项目的启动类代码如下:
@SpringBootApplication
public class NetflixFeignProviderApplication {
public static void main(String[] args) {
SpringApplication.run(NetflixFeignProviderApplication.class, args);
}
}
4.控制层
我们可以写一个Controller控制器,定义web界面如下。
@RestController
@RequestMapping("/user")
@Slf4j
public class UserController {
/**
* 模拟主键自增
*/
private AtomicInteger pk = new AtomicInteger();
<p>
" />
@PostMappingpublic User save(@RequestBody User user) {
user.setUid(pk.incrementAndGet());
return user;
}
/**
* @param uid
* @return
*/@GetMapping("/{uid}")
public User user(@PathVariable("uid") int uid) {
return User.builder()
.uid(uid)
.username("admin")
.password("123456")
.build();
}
@GetMapping("/users")
public List users(@RequestHeader("token") String token) {
// 模拟从数据中获取数据
ArrayList users = new ArrayList();
for (int i = 1; i