springcloud gateway无法路由问题的解决

 更新时间:2023年05月13日 11:38:10   作者:冻冰粉星  
gateway网关的重要作用之一便是进行路由转发工作,下面这篇文章主要给大家介绍了关于springcloud gateway无法路由问题的解决方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

前言

昨天小伙伴问我springcloud gateway 无法路由转发的问题,现在记录一下

现在企业微服务架构基本上都是用springcloud体系了,在国内基本上新项目都用springcloud alibaba,而且基本上都是所有服务聚合在一个父项目中。

springcloud gateway可以实现路由负载均衡等等功能,但是应用过程中,会有一些坑。

描述问题

配置的没问题如下:

server:
  port: 9999
spring:
  application:
    name: gateway-server
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.229.7:8848
    gateway:
      discovery:
        locator:
          enabled: true ##开启了会自动匹配路由规则
      routes: ##配置了手动路由规则,上面的自动开启失效
        - id: nacos-provider
          uri: lb://nacos-provider
          predicates:
            - Path=/mmm/**

provider代码:

@RestController
@RequestMapping("/mmm")
public class MMMController {
    @Value("${server.port}")
    private String port;
    @GetMapping("/get")
    public String get(){
        return port;
    }
}

但是测试始终无效:

分析原因

springcloud项目基本上都聚合到一个父项目中,里面各种子模块如provider、consumer、sentinel、gateway…,其他模块都没问题,但是springcloud gateway有点特殊,因为它依赖了web webflux ,就会有冲突,所以基本上在pom中就要排除web,这样就不会应该父项目依赖了web导致冲突了

springcloud gateway 的pom排除web

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
    <exclusions>
        <exclusion>
			<groupId>org.springframework.boot</groupId>
        	<artifactId>spring-boot-starter-web</artifactId>
        </exclusion>
    </exclusions>
</dependency>

启动会成功,但是项目会有报错提示:

**********************************************************

Spring MVC found on classpath, which is incompatible with Spring Cloud Gateway at this time. Please remove spring-boot-starter-web dependency.

**********************************************************

最后路由不到指定url。

Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.

Fri Mar 17 16:34:53 CST 2023
There was an unexpected error (type=Not Found, status=404).
No message available

解决思路

如何解决呢?我的意见是把springcloud gateway项目独立出来,不要聚合到父项目中,这样就不会有web以来冲突了

独立的springcloud gateway

pom文件如下:

<?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>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.13.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.mmm.springcloud.study</groupId>
    <artifactId>spring-cloud-gateway-demo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.2.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
            <version>2.2.3.RELEASE</version>
        </dependency>
    </dependencies>
</project>

因为没有聚合到父项目中,所以不需要额外提出web,启动后直接访问,成功!

总结

到此这篇关于springcloud gateway无法路由问题解决的文章就介绍到这了,更多相关springcloud gateway无法路由内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 如何解决TCP socket的阻塞问题

    如何解决TCP socket的阻塞问题

    这篇文章主要介绍了如何解决TCP socket的阻塞问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • JavaWeb三大组件之一的Filter详解

    JavaWeb三大组件之一的Filter详解

    本篇文章主要介绍了JavaWeb三大组件之中的Filter过滤器详解,实例分析了JavaWeb之Filter过滤器的使用技巧,非常具有实用价值,需要的朋友可以参考下
    2022-06-06
  • 解决无法解析javax.servlet的方法

    解决无法解析javax.servlet的方法

    最近在创建一个servlet时,自动生成的代码中出现servlet无法解析的提示,令我无法正常使用servlet里的方法,在对各个步骤进行查看后,发现了问题所在,需要的朋友可以参考下
    2021-05-05
  • SpringBoot整合Gson 整合Fastjson的实例详解

    SpringBoot整合Gson 整合Fastjson的实例详解

    这篇文章主要介绍了SpringBoot整合Gson 整合Fastjson的实例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • ArrayList源码探秘之Java动态数组的实现

    ArrayList源码探秘之Java动态数组的实现

    这篇文章将带大家从ArrayList源码来探秘一下Java动态数组的实现,文中的示例代码讲解详细,对我们深入了解JavaScript有一定的帮助,需要的可以参考一下
    2023-08-08
  • 一篇文章带你深入了解Java异常

    一篇文章带你深入了解Java异常

    本篇文章主要介绍了java异常处理机制及应用,异常处理机制是Java语言的一大特色。从异常处理的机制、异常处理的方法、异常处理的原则等方面介绍Java语言的异常处理技术,有兴趣的可以了解一下
    2021-08-08
  • java+SpringBoot设计实现评教系统

    java+SpringBoot设计实现评教系统

    这篇文章主要介绍了用过Java SpringBoot实现一个简单的评价系统,可以做到学生管理、教师管理、评教管理、指标管理、课程管理等。感兴趣的可以了解一下
    2021-12-12
  • Java操作xls替换文本或图片的功能实现

    Java操作xls替换文本或图片的功能实现

    这篇文章主要给大家介绍了关于Java操作xls替换文本或图片功能实现的相关资料,文中通过示例代码讲解了文件上传、文件处理和Excel文件生成,需要的朋友可以参考下
    2024-12-12
  • java数据结构基础:单链表与双向链表

    java数据结构基础:单链表与双向链表

    这篇文章主要为大家详细介绍了java实现单链表、双向链表的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • Java小程序求圆的周长和面积实例

    Java小程序求圆的周长和面积实例

    这篇文章主要介绍了首先用蒙塔卡洛算法求圆周率近似值,然后根据此近似值输出圆的周长和面积,具有一定参考价值,需要的朋友可以了解下。
    2017-09-09

最新评论