赞
踩
由于公司是政企项目,客户扫描到有漏洞,要求我们升级到springboot2.6.5
首先拿到需求翻官网,建议是版本不要跨度太大,如果升级一个版本一个版本慢慢升级(但是我没接收建议,走了弯路)
其实总体很简单,关于spring cloud的版本改掉就行,翻官网或者下面的网站
https://start.spring.io/actuator/info
建议用火狐,如果谷歌有json插件也行
以下是我的改变:
1、
版本爆红:解决方案先检查下maven的配置文件,仓库地址是否配置了
snakeyaml-version 1.23 ==> 1.26
spring-cloud.version Finchley.RELEASE ==>2021.0.3
spring-cloud-config-server 2.0.1.RELEASE ==>3.0.4
新增依赖 commons-logging
新增依赖commons-lang
数据类型转换==>DataSize.ofBytes(524288000)
这个时候出现一个报错
我起初以为是 confing配置中心出问题,高版本弃用,后来才了解到SpringCloud 2020.以后的版本把bootstrap禁用了,导致在读取文件的时候读取不到而报错,所以要新增以下依赖
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-bootstrap</artifactId>
- </dependency>
其他板块报错就新增依赖
但是启动又出现循环依赖的报错
这个错误就很好解决
在配置文件中加入以下就可以
- main:
- allow-circular-references: true
这个时候看配置文件有一个报错
就简单的前面加一层web就可以了
- web:
- resources:
- static-locations: classpath:/static/
就当我以为大功告成的时候,发现项目能启动,但是前端页面访问不到(报404),起初方向出问题了,一直以为是confing配置中心不支持高版本的springboot,准备往nacos上迁移,但担心会有更多的问题,就我遵循官方建议小段升级,我先升级到了springboot2.5.6,发现一切正常
不过关于静态配置是这样的
我就意识到了问题所在,又是翻资料,最终发现:
Springboot-2.6.x所使用到的spring mvc-5.3.x 默认的路径匹配策略改变了,
Spring MVC 处理程序映射匹配请求路径的默认策略已从 AntPathMatcher 更改为PathPatternParser。
Actuator端点现在也使用基于 PathPattern 的 URL匹配,而Actuator端点的路径匹配策略无法通过配置属性进行配置。
如果需要将默认切换回 AntPathMatcher,可以将 spring.mvc.pathmatch.matching-strategy 设置为 ant-path-matcher
这时恍然大悟,配置文件mvc后加上
- pathmatch:
- matching-strategy: ant_path_matcher
大功告成
补充报错:
No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalancer?
原因:
由于SpringCloud Feign在Hoxton.M2 RELEASED版本之后不再使用Ribbon而是使用spring-cloud-loadbalancer,所以不引入spring-cloud-loadbalancer会报错
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-loadbalancer</artifactId>
- </dependency>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。