当前位置: 首页 > news >正文

Spring Cloud - Spring Cloud 声明式接口调用(Fiegn 声明式接口调用概述、Fiegn 使用)

一、Fiegn 声明式接口调用

1、Fiegn 概述
  • Feign 是由 Netflix 提供的一套组件,是一个提供模版的声明式 Web Service 客户端

  • 使用 Feign 可以简化 Web Service 客户端的编写,开发者可以通过简单的接口和注解来调用 HTTP API

  • Spring Cloud 也提供了对 Feign 的集成组件 Spring Cloud Feign,有可插拔(低耦合)、基于注解、负载均衡、服务熔断等功能

2、Fiegn 使用概述
  • 只需要创建接口,同时在接口上添加相关注解即可
3、Ribbon 和 Feign 的对比
  • Ribbon 是一个通用的 HTTP 客户端工具

  • Feign 基于 Ribbon ,更加灵活

4、Fiegn 的特点
  • Feign 是一个声明式 Web Service 客户端

  • 支持 Feign 注解和 Spring MVC 注解

  • Feign 基于 Ribbon 实现

  • Feign 集成了 Hystrix,具备服务熔断功能


二、Fiegn 使用

1、具体实现
(1)创建工程
  • 创建子工程(Module),在 pom.xml 文件中配置相关依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>SpringCloudTest</artifactId><groupId>com.my</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>Feign</artifactId><dependencies><!-- Eureka Client --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><!-- Feign --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency></dependencies></project>
(2)配置文件
  • 在 recourses 目录下创建并配置 application.yaml 文件
server:port: 8050
spring:application:name: Feign
eureka:client:service-url:defaultZone: http://localhost:8761/eureka/instance:prefer-ip-address: true
(3)Entity
  • 创建 Student 实体类
package com.my.entity;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {private Integer id;private String name;
}
(4)Feign 接口
  • 创建 FeignServerProviderClient 接口
package com.my.feign;import com.my.entity.Student;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;import java.util.Collection;// 指向服务提供者(服务在注册中心对应的服务名)
@FeignClient(value = "ServerProvider")
public interface FeignServerProviderClient {@GetMapping("/student/findAll")public Collection<Student> findAll();@GetMapping("/student/findById/{id}")public Student findById(@PathVariable("id") Integer id);@PostMapping("/student/save")public void save(@RequestBody Student student);@PutMapping("/student/update")public void update(@RequestBody Student student);@DeleteMapping("/student/deleteById/{id}")public void deleteById(@PathVariable("id") Integer id);
}
(5)Controller
  • 创建 FeignHandler 类
package com.my.controller;import com.my.entity.Student;
import com.my.feign.FeignServerProviderClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import java.util.Collection;@RestController
@RequestMapping("/feign")
public class FeignHandler {@Autowiredprivate FeignServerProviderClient feignServerProviderClient;@GetMapping("/findAll")public Collection<Student> findAll(){return feignServerProviderClient.findAll();}@GetMapping("/findById/{id}")public Student findById(@PathVariable("id") Integer id){return feignServerProviderClient.findById(id);}@PostMapping("/save")public void save(@RequestBody Student student){feignServerProviderClient.save(student);}@PutMapping("/update")public void update(@RequestBody Student student){feignServerProviderClient.update(student);}@DeleteMapping("/deleteById/{id}")public void deleteById(@PathVariable("id") Integer id){feignServerProviderClient.deleteById(id);}
}
(6)启动类
  • 创建启动类
package com.my;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;@SpringBootApplication// 使 Feign 生效
@EnableFeignClients
public class FeignApplication {public static void main(String[] args) {SpringApplication.run(FeignApplication.class, args);}
}
2、测试
  • 依次启动注册中心、服务提供者、Feign,使用 Postman 进行测试
(1)findAll
参数项说明
请求类型GET 请求
请求地址访问地址:http://localhost:8040/feign/findAll
(2)findById
参数项说明
请求类型GET 请求
请求地址http://localhost:8040/feign/findById/1
(3)save
参数项说明
请求类型POST 请求
访问地址http://localhost:8040/feign/save
  • JSON 数据
{"id": 4,"name": "nono"
}
(4)update
参数项说明
请求类型PUT 请求
请求地址http://localhost:8040/feign/update
  • JSON 数据
{"id": 3,"name": "jack"
}
(5)deleteById
参数项说明
请求类型DELETE 请求
请求地址http://localhost:8040/feign/deleteById/4
http://www.dtcms.com/a/517597.html

相关文章:

  • 宝塔设置加速wordpress站点重庆网站建设 重庆网站制作
  • 游戏是怎么做的视频网站怎么把网站源码
  • 快印店网站建设84wzjs吉林新农村建设网站
  • 给公司做网站需要华多少钱产品设计需要学的软件
  • 如何用纯C++和Linux系统调用从零实现一个自己的Docker
  • 公司网站建设原则公众号怎么制作左右滑动图片
  • Embedding与词表示技术:从OneHot到FastText的演进
  • 网站推广网络营销方案西城区网站建设
  • 长春网站制作软件网站怎么做图片动态图片不显示了
  • 深圳工程造价建设信息网站wordpress综合检测工具
  • 北京做的比较好的网站公司网站建设企业建站要求
  • 公司网站企业文化怎么做销售管理软件哪个好用
  • 有哪些做设计交易网站招商银行和建设银行网站功能对比
  • 数据结构系列之二叉树
  • 【数据结构】反射、枚举、lambda表达式以及补充知识
  • 网站开发费计入什么科目自己做微信电影网站怎么做
  • 23.C++11(三)
  • 梅州市五华县建设银行网站景观设计公司起名
  • 刚做淘客没有网站奥门网站建设
  • 专业做网站机构哪些ppt网站是免费的
  • 爱情动做网站推荐wordpress去除更新
  • 深圳技术支持 骏域网站建设wordpress 导出pdf文件
  • 深圳公明网站建设问题不大工作室 网站
  • Langchain从零开始到应用落地案例[AI智能助手]【1】---调用ollama模型实现简单循环会话
  • 【架构】MVP 对比 MVVM
  • 建立网站的基本流程有哪些步骤给wordpress添加小图标
  • Springboot——整合Aspose实现table的字段填充与表格复制
  • 产品展示型网站赏析河南网站建设电话
  • 国外免费搭建网站源码企业网站建设策划书 前言
  • 【网络代理相关知识】