错误描述:renren-fast前端页面验证码刷新不出来,通过F12查看网页控制台,显示503 not service,找不到服务。
错误根因分析:我用的spring-cloud-dependencies的版本为20.0.3,spring-cloud-alibaba-dependencies的版本时2.1.0.RELEASE, 两者不兼容导致网关路由失效,即如下配置不生效。

解决方案:
更换版本:spring-cloud-dependencies的版本为3.0.3,spring-cloud-alibaba-dependencies的版本时2.2.1.RELEASE, 在工程的pom中加入如下几个依赖。
(1)首先是gulimall-common中添加注册中心和配置中心的依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- 配置中心-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
(2)gulimall-common中添加springcloud-alibaba的依赖,采用2.2.1的版本,版本错了验证码会刷不出来。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
(3)gulimall-gateway中添加spring-loadbalance依赖,因为Spring Cloud 2020.0.0版本之前会自动引入Netflix Ribbon依赖,Netflix Ribbon功能跟loadbalancer一样,因Netflix公司停止维护Ribbon后, 在Spring Cloud 2020.0.0版本之后Spring使用loadbalancer替代了Ribbon, 但是loadbalancer依赖需要手动引入.
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
(4)如果还刷不出来,检查一下你配置中心是否能读出配置,不行的话,gulimall-common加如下依赖,因为spring-cloud-20.0.3默认是关闭“优先读取bootstrap.properties”这个功能的。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>3.0.3</version>
</dependency>
(5)配置了以上几步之后,跨域的配置也写了,但是还是出现问题,需要更改跨域配置代码,修改如下。addAllowedMethod注释掉,添加addAllowedOriginPattern。
@Configuration
public class GulimallCorsConfiguration {
@Bean
public CorsWebFilter corsWebFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration corsConfiguration = new CorsConfiguration();
//1、配置跨域
corsConfiguration.addAllowedHeader("*");
corsConfiguration.addAllowedMethod("*");
// corsConfiguration.addAllowedOrigin("*");
corsConfiguration.addAllowedOriginPattern("*");
corsConfiguration.setAllowCredentials(true);
source.registerCorsConfiguration("/**",corsConfiguration);
return new CorsWebFilter(source);
}
}
踩坑心得:实在找不出bug的时候,考虑一下各种工具插件的版本问题,真的是一代版本一代神啊。
本文介绍了在使用Spring Cloud时遇到的503服务不可用问题,问题根源是版本不兼容。解决方案包括更新Spring Cloud和Spring Cloud Alibaba的版本到兼容组合,添加Nacos注册中心和配置中心依赖,引入Spring LoadBalancer依赖,并调整跨域配置。同时,对于配置中心读取问题,可能需要启用'bootstrap.properties'读取。最后,分享了版本选择和工具兼容性在解决此类问题中的重要性。
5729





