Spring Cloud:升级版本引发的问题
为啥要升级Spring Cloud的版本
-
主要就是学Seata分布式事务框架的时候,我发现我当前项目的版本对应的Seata服务的版本为1.3.0;而Seata版本为1.3.0的导入配置到Nacos上面去不仅麻烦,而且导入后再Nacos上显示还特别多,足足有10页,我就想把Seata服务的版本升级到1.4.2,Seata这个版本导入配置到Nacos上只需要一个DataId就够了,方便维护和查看. -
因为升级了Seata为1.4.2,相应的Spring Cloud对应版本也要升级,这就是我升级版本的原因.

版本升级导致的原因
-
没升级前的项目版本为:
Spring Cloud Alibaba Version | Spring Cloud Version | Spring Boot Version |
---|---|---|
2.2.7.RELEASE | Hoxton.SR12 | 2.3.12.RELEASE |
-
没升级前项目的框架为 Spring boot+Nacos+OpenFeign -
升级的项目版本为:
Spring Cloud Alibaba Version | Spring Cloud Version | Spring Boot Version |
---|---|---|
2021.0.1.0 | 2021.0.1 | 2.6.3 |
-
升级完之后,直接运行项目,直接就报错了
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'scopedTarget.druidDataSourceWrapper': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'spring.datasource.druid.master.url' in value "${spring.datasource.druid.master.url}"

-
这个错误的意思是,Bean创建不成功,没有找到数据库的url,导致这个的原因就是没有连接到Nacos配置。然后我就纳闷了,我没有升级版本之前还运行过,是没有任何问题的,我就开始找,发现了问题,就是升级到这个版本之后,Spring Cloud无法读取bootstrap.yml配置文件,而我的Nacos配置都是写在bootstrap.yml上的,所以导致这个问题 -
解决办法,需要在pom文件添加bootstrap依赖即可
<!--引入阿里数据库连接池-->
<!-- <dependency>-->
<!-- <groupId>com.alibaba</groupId>-->
<!-- <artifactId>druid</artifactId>-->
<!-- <version>1.1.6</version>-->
<!-- </dependency>-->
<!-- 代替上面的阿里数据库连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.8</version>
</dependency>
<!--bootstrap依赖 导入该依赖后 bootstrap配置文件开启-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
结论
-
我本以为就是一个小小的升级版本,结果就遇到了各种坑,果然别人说的版本还是不要乱升级,因为你永远不会知道,升级后有哪些坑,可能以前能用的配置文件,突然不起作用了 -
最后关注我的微信公众号【楼梯间的男孩】,一起学习成长
原文始发于微信公众号(楼梯间的男孩):Spring Cloud:升级版本引发的问题
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/197330.html