Skip to content

GateWay问题记录


在使用GateWay+Nacos配置网关时,需要添加以下依赖。

  • Nacos依赖
<!-- Nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2023.0.1.2</version>
</dependency>
  • GateWay网关依赖
<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-boot-starter-web 的目的是避免引入不必要的 Web 相关组件,减少依赖体积,并避免与其他 Web 配置(如 WebFlux)产生冲突。spring-cloud-starter-gateway 本身是一个网关,负责请求的转发、路由等功能,不一定需要 Web 层的功能。它是基于 spring-webflux 实现的,这意味着它是非阻塞的,且不依赖传统的 Web 层(如 Spring MVC)。此外,如果已经使用 spring-boot-starter-webflux,就不需要 spring-boot-starter-web,否则会造成冲突。


<!-- LoadBalancer -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

在使用 uri: lb://ms-web-service 时,如果服务有多个实例,必须添加负载均衡依赖,才能确保请求能正确路由到各个实例。否则,虽然能找到服务名称,但无法正确请求到具体的实例。如果只有一个实例,负载均衡依赖就不需要引入,且 uri 应该直接指向该实例的具体 IP 地址。