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

spring-cloud-starter-gateway-mvc的网关实现

一 概括

最近,我也一直在使用SpringCloudGateway开发我们自己的网关产品。根据我对官网文档:https://docs.spring.io/spring-cloud-gateway/reference/spring-cloud-gateway-server-mvc.html
的理解,内容如下:

SpringCloudGateway的默认底层依赖项是SpringWebflux。我们知道Spring Webflux是异步和响应式编程,并且编程范式是使用流范式编写的;

那么SpringCloudGateway支持同步网关吗?官方支持,官方网站提供了相应的解决方案,即将默认的底层Webflux切换到SpringMVC以支持同步;

相当于SpringCloudGateway为您提供了两种网关路由的底层实现,一种是对应于SpringWebflux的异步实现,另一种是与SpringMVC对应的同步实现。

二 spring-cloud-starter-gateway-mvc例子

1 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"><modelVersion>4.0.0</modelVersion><groupId>com.winning.gate</groupId><artifactId>mvc-gateway</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>2023.0.0</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway-mvc</artifactId></dependency></dependencies></project>

2 application.yml:

server:port: 9098

3 com.demo.GatewaySampleApplication:

package com.demo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** @author xch* 2023/12/15 16:56*/
@SpringBootApplication
public class GatewaySampleApplication {public static void main(String[] args) {SpringApplication.run(GatewaySampleApplication.class, args);}}

4 com.demo.SimpleGateway

package com.demo;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.function.RouterFunction;
import org.springframework.web.servlet.function.ServerResponse;import static org.springframework.cloud.gateway.server.mvc.handler.GatewayRouterFunctions.route;
import static org.springframework.cloud.gateway.server.mvc.handler.HandlerFunctions.http;/*** @author xch* 2023/12/15 16:52*/@Configuration
class SimpleGateway {@Beanpublic RouterFunction<ServerResponse> getRoute() {return route().GET("/demo", http("http://localhost:8080/")).build();}
}

Above is all the code

5 Request Results

GET http://localhost:9098/demo?ceshi=ceshiHTTP/1.1 200 
date: Fri, 15 Dec 2023 09:23:37 GMT
Content-Type: application/json
Transfer-Encoding: chunked
Keep-Alive: timeout=60
Connection: keep-alive{"code": 0,"data": "ceshi"
}
Response file saved.
> 2023-12-15T172337.200.jsonResponse code: 200; Time: 19ms (19 ms); Content length: 25 bytes (25 B)

The destination service address of the route is in SimpleGateway, you can change it to your own service

http://www.lryc.cn/news/263251.html

相关文章:

  • 《PySpark大数据分析实战》-11.Spark on YARN模式安装Hadoop
  • 多架构容器镜像构建实战
  • 通过层进行高效学习:探索深度神经网络中的层次稀疏表示
  • 自然语言处理阅读第二弹
  • 利用canvas封装录像时间轴拖动(uniapp),封装上传uniapp插件市场
  • PDF转为图片
  • 隐私计算介绍
  • HTML有哪些列表以及具体的使用!!!
  • DriveWorks Solo捕获参数(二)
  • 基于开源的JAVA mongodb jdbc 驱动 使用教程
  • [RK-Linux] RK3399使用RK开源SPL,修改U-Boot为FIT打包方式,裁剪trust分区
  • 【网络安全】-Linux操作系统—VMWare软件
  • 关于chatgpt一点肤浅认识
  • Redis结合SpringBoot 基本使用
  • JAVA主流日志框架梳理学习及使用
  • java多个设计模式解决大量if-else堆积
  • js DOM的一些小操作 获取节点集合Node( getElementsByClassName等)
  • Arcgis导出为tiff
  • nginx中的root and alias命令的区别
  • python提取图片型pdf中的文字(提取pdf扫描件文字)
  • 08‐Mysql全局优化与Mysql 8.0新特详解
  • 【LeetCode刷题笔记】155.最小栈
  • 我的4096创作纪念日
  • Java Web 01_HTML4HTML5基础标签语法
  • Androidstudio加载编译时kotlin-compiler-embeddable一直下载中
  • 案例073:基于微信小程序的智慧旅游平台开发
  • Flink系列之:Flink 1.8.0 中的状态 TTL:如何在 Apache Flink 中自动清理应用程序状态
  • 2023 亚马逊云科技 re:Invent 大会探秘:Aurora 无限数据库的突破性应用
  • IDEA添加Apifox插件后,返回参数不详细解决办法
  • js多图合成一张图