Spring Cloud升级最新Finchley版本的所有坑
升级Spring Cloud版本是一个具有一定挑战性的任务,本篇文章主要介绍在升级Spring Cloud到最新版本Finchley时的几个注意事项及相关解决方案。
1. 升级前的准备工作
在升级Spring Cloud前,需要先了解当前的Spring Boot版本与Spring Cloud版本之间的兼容性。根据Spring Boot版本选择对应的Spring Cloud版本,可以在官网查看最新的兼容版本。并且需要对工程依赖进行排查,是否存在可用的最新版本。
2. 坑一:Hystrix Dashboard不能正常访问
在升级到Finchley版本后,Hystrix Dashboard不能正常访问的情况比较常见。这是因为在Finchley版本中,Hystrix Dashboard不再在spring-cloud-starter-hystrix-dashboard包中,而是移到了spring-boot-starter-actuator包中,需要修改配置文件application.yml或者在启动类中加注解 @EnableHystrixDashboard 。
修改application.yml文件:
management:
endpoints:
web:
exposure:
include: hystrix.stream,health
或者在启动类上添加@EnableHystrixDashboard注解:
@SpringBootApplication
@EnableHystrixDashboard
public class ServiceConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ServiceConsumerApplication.class, args);
}
}
3. 坑二: Zuul路由配置不匹配
在Finchley版本升级后,Zuul路由配置发生了变化,需要修改路由配置文件。比如,在老版本的Spring Cloud中,以下的配置是正确的:
zuul:
routes:
service-provider:
path: /api/**
service-id: service-provider
但是在Finchley版本中,上述的配置就无法匹配到指定的服务,正确的配置如下:
zuul:
routes:
service-provider:
path: /api/**
url: http://service-provider/**
在新版本中,需要使用url字段来指定服务的地址,需要加上两个星号。
4. 示例一
在升级Spring Cloud版本后,启动应用时,发生以下错误:
***************************
APPLICATION FAILED TO START
***************************
Description:
Field xxxService in com.xxx.controller.XxxController required a bean of type 'xxxService' that
could not be found.
Action:
Consider defining a bean of type 'xxxService' in your configuration.
在检查了代码后,发现代码无误,Spring Cloud版本也升级到最新版本。此时,需要查看业务工程的starter是否存在冲突的依赖。在此示例中,发现业务工程的starter存在和Spring Cloud版本所需的starter冲突的情况,需要将业务工程依赖的starter版本降低,来保证和Spring Cloud版本的starter能够兼容。
5. 示例二
在升级Spring Cloud版本后,启动应用时,发生以下错误:
***************************
APPLICATION FAILED TO START
***************************
Description:
The BeanFactory.getRuntimeBeanNameGenerator() method must be implemented.
Action:
Upgrade Spring to 5.0.x or later.
这是因为当前的Spring Boot版本过低,需要将Spring Boot升级到5.0.x及之后的版本,才能和当前使用的Spring Cloud版本兼容。
总结
在升级Spring Cloud版本时,需要注意Spring Boot版本和Spring Cloud版本之间的兼容性,同时还需要针对具体业务的情况进行调整和排查。如果发现任何问题,要根据具体的错误提示进行排查,查看依赖是否存在冲突或者特定功能的使用方式是否发生了变化。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring Cloud升级最新Finchley版本的所有坑 - Python技术站