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

Spring Cloud Gateway Server MVC

之前你如果要用spring cloud gateway ,就必须是webflux 的,也就是必须是异步响应式编程。不能和spring mvc 一起使用。现在spring cloud 新出了一个可以不用webflux的gateway。

具体使用mvc的gateway步骤如下

普通的Eureka Client的项目

如果你只是想测试一下gateway mvc,可以建一个普通的spring boot项目,然后写一个/test rest api就可以了。

application.yml

spring:application:name: eureka-clientcloud:compatibility-verifier:enabled: false
eureka:client:service-url:defaultZone: http://localhost:8761/eureka/instance:hostname: localhost
server:servlet:context-path: /eureka-clientport: 8080

TestController.java

@RestController
public class TestController {@RequestMapping(value = "/test", method = RequestMethod.GET)public String test() {return "test";}
}

EurekaClientApplication.java

@SpringBootApplication
@EnableDiscoveryClient
public class EurekaClientApplication {public static void main(String[] args) {SpringApplication.run(EurekaClientApplication.class, args);}
}

访问http://localhost:8080/eureka-client/test

Gateway MVC 的项目

在pom.xml加spring-cloud-starter-gateway-mvc 

    <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.2.4</version><relativePath/> <!-- lookup parent from repository --></parent><properties><java.version>17</java.version><spring-cloud.version>2023.0.0</spring-cloud.version></properties><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway-mvc</artifactId></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>

application.yml

spring:application:name: gateway-mvc
server:port: 8088

RouteConfiguration.java

package com.example.gateway;
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;@Configuration
public class RouteConfiguration {@Beanpublic RouterFunction<ServerResponse> getRoute() {return route("simple_route").GET("/eureka-client/**", http("http://localhost:8080")).build();}
}

或者用配置文件的方式.application.yml

spring:cloud:gateway:mvc:routes:- id: simple_routeuri: http://localhost:8080predicates:- Path=/eureka-client/**

GatewayApplication.java

@SpringBootApplication
public class GatewayApplication {public static void main(String[] args) {SpringApplication.run(GatewayApplication.class, args);}}

访问http://localhost:8080/eureka-client/test

如果你不想hardcode 你的hostname和端口,也可以用Eureka 的方式来获取hostname和端口号

    @Beanpublic RouterFunction<ServerResponse> gatewayRouterFunctionsAddReqHeader() {return route("api_route").GET("/eureka-client/**", http()).filter(lb("EUREKA-CLIENT")).build();}

Spring Cloud Gateway Server MVC :: Spring Cloud Gateway

相关文章:

  • 移植 Zephyr 到 Art-Pi
  • C语言 数组指针 指针数组
  • Python 全栈系列236 rabbit_agent搭建
  • 微服务(基础篇-003-Nacos集群搭建)
  • 黑帽子学Python
  • GDC期间LayaAir启动全球化战略
  • Flink中流式的各种聚合
  • Http 超文本传输协议基本概念学习摘录
  • Spark spark-submit 提交应用程序
  • 信号处理--使用EEGNet进行BCI脑电信号的分类
  • Apache HTTP服务器(Linux离线编译安装)
  • 6.3 BP神经网络
  • STM32微控制器的中断优先级设置中,抢占优先级和子优先级如何影响中断响应?
  • 基于SpringBoot的会员制医疗预约服务管理信息系统
  • OSPF邻居震荡抑制
  • 深入了解以太坊
  • JavaScript-Array类型
  • Java读取Properties文件的六种方法
  • oldjun 检测网站的经验
  • PHP的类修饰符与访问修饰符
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • Terraform入门 - 3. 变更基础设施
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • 成为一名优秀的Developer的书单
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 排序算法之--选择排序
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 如何学习JavaEE,项目又该如何做?
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 移动端唤起键盘时取消position:fixed定位
  • 自动记录MySQL慢查询快照脚本
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​2021半年盘点,不想你错过的重磅新书
  • ​configparser --- 配置文件解析器​
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (C语言)共用体union的用法举例
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (ros//EnvironmentVariables)ros环境变量
  • (zhuan) 一些RL的文献(及笔记)
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (力扣题库)跳跃游戏II(c++)
  • (六)vue-router+UI组件库
  • (论文阅读11/100)Fast R-CNN
  • (七)Knockout 创建自定义绑定
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • .Net 8.0 新的变化
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .NET Core 中插件式开发实现
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded
  • .net获取当前url各种属性(文件名、参数、域名 等)的方法
  • .NET面试题(二)
  • .NET性能优化(文摘)