【SpringCloud+】Spring Cloud Hoxton.SR8升级到Spring Cloud 2020

项目场景

由于近期项目做安全扫描,原项目中引用的Spring Cloud Hoxton.SR8,存在一些漏洞问题。也是因为Spring Cloud新组件的发布。所以打算升级到Spring Cloud 2020版本,在此记录一下一路的坎坷。


依赖关系

Spring Cloud组件的使用,是有依赖关系。若不进行相关组件升级,会报一系列的问题。非常让人EMO。
示例

Spring Cloud VersionSpring Cloud Alibaba VersionSpring Boot Version
Spring Cloud 2020.0.12021.12.4.2
Spring Cloud Hoxton.SR92.2.6.RELEASE2.3.2.RELEASE
Spring Cloud Hoxton.SR82.2.5.RELEASE2.3.2.RELEASE

升级记录

1.Spring Cloud Dependencies 升级

在使用Spring Cloud 2020之后,官方文档介绍新版spring cloud关闭了bootstrap.xml读取。所以需要增加引用。

<dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-dependencies</artifactId>
			<version>2020.0.3</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
	</dependencies>
</dependencyManagement>

<dependencies>
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-bootstrap</artifactId>
		<version>3.0.3</version>
	</dependency>
</dependencies>

2.@EnableOAuth2Client升级@EnableWebSecurity

新版Spring Security 包移动至spring-cloud-commons下,见官方PR:https://github.com/spring-cloud/spring-cloud-commons/pull/870/files
日志信息:

Field accessTokenContextRelay in org.springframework.cloud.commons.security.oauth2.client.AccessTokenContextRelay

3.新增spring-cloud-loadbalancer支持,去除ribbon服务

<dependency>
		 <groupId>org.springframework.cloud</groupId>
		 <artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>
<!-- <dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
	    <version>${spring-cloud-starter-netflix.version}</version>
</dependency> -->

日志信息:
没有loadbalancer,但是nacos中ribbon会造成loadbalancer包失效,所以在包中移除ribbion依赖,并加入loadbalancer依赖。

org.springframework.beans.factory.BeanCreationNotAllowedException: Error creating bean with name 'sqlSessionFactory': Singleton bean creation not allowed while singletons of this factory are in destruction (Do not request a bean from a BeanFactory in a destroy method implementation!)
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'captchaController': Unsatisfied dependency expressed through field 'emailServiceClient'; 
nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'EmailServiceClient': Unexpected exception during bean creation; 
nested exception is java.lang.IllegalStateException: No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalancer?
Caused by: java.lang.ClassCastException: org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient cannot be cast to org.springframework.cloud.loadbalancer.blocking.client.BlockingLoadBalancerClient

4.spring升级

<dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-core</artifactId>
         <version>5.3.7</version>
</dependency>

日志信息:

Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/core/metrics/ApplicationStartup

5.新增spring-integration-core

<dependency>
    <groupId>org.springframework.integration</groupId>
    <artifactId>spring-integration-core</artifactId>
    <version>${spring-integration-core.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework.integration</groupId>
    <artifactId>spring-integration-jmx</artifactId>
    <version>5.5.0</version>
</dependency>

日志信息:

Failed to introspect Class [org.springframework.integration.monitor.IntegrationMBeanExporter] from ClassLoader [sun.misc.Launcher$AppClassLoader@18b4aac2]

以上是我在升级Spring Cloud相关组件,遇到的问题。希望这篇文章能对大家有所帮助。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值