解決方案:微服務(wù)遠程調用組件Feign的使用詳解
優(yōu)采云 發(fā)布時(shí)間: 2022-11-25 18:38解決方案:微服務(wù)遠程調用組件Feign的使用詳解
一、總結
我們知道目前最火、技術(shù)含量最高的技術(shù)就是SpringCloud微服務(wù),那么今天一哥就帶大家了解一下微服務(wù)的核心組件之一,Feign的基本使用及其工作機制。
二、Feign簡(jiǎn)介 一、概念
在學(xué)習如何使用Feign之前,我們先來(lái)了解一下什么是Feign。
Feign 是 Netflix 開(kāi)發(fā)的聲明式(目前由 Spring 維護)和模板化的 HTTP 客戶(hù)端。Feign可以幫助我們更快速優(yōu)雅的調用HTTP Api。
簡(jiǎn)單來(lái)說(shuō),Feign是一個(gè)遠程服務(wù)調用的框架/工具,可以讓開(kāi)發(fā)者以更低耦合、更少代碼、更快、更兼容的方式進(jìn)行遠程服務(wù)調用。
2.功能
了解了這些基本概念之后,接下來(lái)小編就帶大家看看Feign組件是如何實(shí)現遠程接口調用的。話(huà)不多說(shuō),我們直接上代碼。
三、服務(wù)提供者 1、添加依賴(lài)
首先我們在父POM文件中添加核心依賴(lài),如下:
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文件中添加依賴(lài)如下:
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、創(chuàng )業(yè)班
項目的啟動(dòng)類(lèi)代碼如下:
@SpringBootApplication
public class NetflixFeignProviderApplication {
public static void main(String[] args) {
SpringApplication.run(NetflixFeignProviderApplication.class, args);
}
}
4.控制層
我們可以寫(xiě)一個(gè)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