解决导入网关gateway依赖爆红

环境:
spring-boot:2.1.8
spring-cloud:Greenwich.SR3

问题描述:
在加载spring-cloud-starter-gateway网关依赖时控制台出现错误:

spring-cloud-starter-gateway:unknown

导入网关的依赖为:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>

依赖爆红的原因是既没有指定版本号,依赖管理器导入也错误,导成spring-cloud-alibaba-dependencies的了。而该组件是由spring-cloud管理的,这是两个不同的依赖管理器。

正确的依赖管理器:

<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>

另外要注意两点:

1)在使用spring-boot组件时,spring-boot和spring-cloud的版本要对应:

image-20201127055050856

2)gateway会与spring-boot-starter-web产生冲突。

原因是Gateway构建于 Spring 5+,基于 Spring Boot 2.x 响应式的、非阻塞式的 API。

而启动时默认使用了 spring-boot-starter-web 的内置容器,不支持非阻塞。

  • 问题解决:
    有两种解决方式:
    1、 排除 web 内置容器

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <!-- Maven整个生命周期内排除内置容器,排除内置容器导出成war包可以让外部容器运行spring-boot项目-->
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    

    2、 使用 spring-webflux 模块,webflux 有一个全新的非堵塞的函数式 Reactive Web 框架,可以用来构建异步的、非堵塞的、事件驱动的服务

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-webflux</artifactId>
    </dependency>
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值