解决导入网关gateway依赖爆红
环境:spring-boot:2.1.8spring-cloud:Greenwich.SR3问题描述:在加载spring-cloud-starter-gateway网关依赖时控制台出现错误:spring-cloud-starter-gateway:unknown导入网关的依赖为:<dependency><groupId>org.springframework.cloud&l
环境:
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的版本要对应:
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>
更多推荐
所有评论(0)