当前位置: 首页 > 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 {
    @Bean
    public 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=ceshi

HTTP/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.json

Response 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

相关文章:

  • 将包上传到 npm
  • 深度学习之模型权重
  • 【Axure RP9】动态面板使用------案例:包括轮播图和多方式登入及左侧菜单栏案例
  • 【网络安全】网络防护之旅 - Java安全机制探秘与数字证书引爆网络防线
  • 免费获取GPT-4的五种工具
  • 手机天线市场分析:预计2029年将达到576亿美元
  • ansible模块
  • 自助式可视化开发,ETLCloud的集成之路
  • 电脑入门基础知识
  • JAVA主流日志框架梳理学习及使用
  • 状态管理@State
  • redis集群模糊获取缓存redisKey
  • 【Vue】elementUI表格,导出Excel
  • 2023_Spark_实验二十九:Flume配置KafkaSink
  • Python3 数字(Number) ----20231215
  • C# WPF上位机开发(动态添加控件)
  • 智慧路灯杆如何实现雪天道路安全监测
  • PowerShell实战(一)PowerShell使用ImportExcel模块轻松操作Excel
  • 写好ChatGPT提示词原则之:清晰且具体(clear specific)
  • 【期末复习向】长江后浪推前浪之ChatGPT概述
  • 苏东坡:人生就是哈哈哈哈哈
  • 青年与人工智能共未来,上海创新创业青年50人论坛徐汇分论坛举办
  • 国防部:奉劝有关国家不要引狼入室,甘当棋子
  • 进化版大巴黎通杀英超,那个男人后悔了吗
  • 江淮、极氪、奇瑞,排着队造“劳斯莱斯”
  • 重磅金融政策密集发布!一文梳理这场国新办发布会