当前位置: 代码网 > it编程>编程语言>Java > springboot2升级到springboot3过程相关修改记录

springboot2升级到springboot3过程相关修改记录

2024年12月17日 Java 我要评论
近期项目被扫描出关于spring framework路径遍历漏洞(cve-2024-38816),客户要求整改,查了下springboot2需要升级到5.3.40才可以,但springboot2好像不

近期项目被扫描出关于spring framework路径遍历漏洞(cve-2024-38816),客户要求整改,查了下springboot2需要升级到5.3.40才可以,但springboot2好像不太能很快就升级,或者有可能不再会升级了,因此直接就将springboot升级到3了,本想着万年jdk8,但springboot3不支持jdk8,看样子要打破了,因此利用周末做了一下升级测试,记录如下:

以下为我进行springboot2升级到springboot3过程相关修改记录,备查,你的项目不一定用到下面所有的,可以参考着改

主要修改

jdk升级

按springboot3要求,升级到jdk17或jdk21,我这边是升级到jdk17

spring-boot-starter-parent

spring-boot-starter-parent依赖版本升级

升级前

<parent>
		<groupid>org.springframework.boot</groupid>
		<artifactid>spring-boot-starter-parent</artifactid>
		<version>2.7.18</version>
		<relativepath /> <!-- lookup parent from repository -->
	</parent>

升级后

<parent>
		<groupid>org.springframework.boot</groupid>
		<artifactid>spring-boot-starter-parent</artifactid>
		<version>3.4.0</version>
		<relativepath /> <!-- lookup parent from repository -->
	</parent>

jdk源码编码修改,将1.8改成17或21

修改前

<build>
		<plugins>
			<plugin>
				<groupid>org.apache.maven.plugins</groupid>
				<artifactid>maven-compiler-plugin</artifactid>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
				</configuration>
			</plugin>
		</plugins>
	</build>

修改后

<build>
		<plugins>
			<plugin>
				<groupid>org.apache.maven.plugins</groupid>
				<artifactid>maven-compiler-plugin</artifactid>
				<configuration>
					<source>17</source>
					<target>17</target>
				</configuration>
			</plugin>
		</plugins>
	</build>

javax.servlet.*相关的类找不到,需要切换依赖为jakarta.servlet

<!--jakarta.servlet start -->
		<dependency>
			<groupid>jakarta.servlet</groupid>
			<artifactid>jakarta.servlet-api</artifactid>
		</dependency>
		<!--jakarta.servlet end -->

同时,将所有javax.servlet.*修改为jakarta.servlet.*

另外校验类相关的也进行修改javax.validation.*修改为jakarta.validation.*

mybatis-plus-boot-starter升级

mybatis-plus-boot-starter需要升级,不升可能会报invalid value type for attribute ‘factorybeanobjecttype’: java.lang.string,需要升级一下依赖

升级成:mybatis-plus-spring-boot3-starter,我使用的是3.5.5

<!-- mybatis-plus start-->
		<dependency>
		    <groupid>com.baomidou</groupid>
		    <artifactid>mybatis-plus-spring-boot3-starter</artifactid>
		    <version>3.5.5</version>
		</dependency>
		<!-- mybatis-plus end-->

redis修改

配置上需要加上data

需要修改redis的配置:由原来的spring.redis.修改为spring.data.redis.

改完后重启又发现如下错误:
unable to make field private final byte[] java.lang.string.value accessible: module java.base does not “opens java.lang” to unnamed module @2bbaf4f0

原因是redission版本比较低,我升级版本后就没问题了

升级前版本:<redisson.version>3.12.5</redisson.version>

升级后版本:<redisson.version>3.40.2</redisson.version>

swagger升级到springboot3

<swagger3.version>2.7.0</swagger3.version>
<!-- swagger3 start -->
		<dependency>
      <groupid>org.springdoc</groupid>
      <artifactid>springdoc-openapi-starter-webmvc-ui</artifactid>
      <version>${swagger3.version}</version>
    </dependency>
    <!-- swagger3 end -->

swagger3默认是开启了接口和doc的访问的如引入上面的依赖后,可以通过如下地址访问(假如端口为8080,context-path为/test)

http://localhost:8080/test/swagger-ui/index.html
http://localhost:8080/test/v3/api-docs

注:如果生产环境中需要禁用,使用如下配置进行,分别进行ui的禁用和api-docs的禁用

springdoc:
  swagger-ui:
    enabled: true
  api-docs:
    enabled: true

其他修改参考

如果用到了阿里巴巴druid数据源,最好升级到新版本

我这里是从druid的1.2.12版本升级到了1.2.24

注:我使用的是编程式的阿里巴巴的监控配置,webstatfilter和statviewservlet的实现类需要修改,如果不是用编程式,可以不用管这一步

import com.alibaba.druid.support.jakarta.webstatfilter;
import jakarta.servlet.annotation.webfilter;
import jakarta.servlet.annotation.webinitparam;
//注意不要忘记在 springbootsampleapplication.java 上添加 @servletcomponentscan 注解,不然就是404了。
@webfilter(
		filtername = "druidwebstatfilter", urlpatterns = "/*", 
		initparams = { @webinitparam(name = "exclusions", value = "weburi.json,.html,.js,.gif,.jpg,.png,.css,.ico,/druid/*") // 忽略资源
})
public class druidstatfilter extends webstatfilter {
}
import com.alibaba.druid.support.jakarta.statviewservlet;
import jakarta.servlet.annotation.webinitparam;
import jakarta.servlet.annotation.webservlet;
//注意不要忘记在 springbootsampleapplication.java 上添加 @servletcomponentscan 注解,不然就是404了。
@webservlet(urlpatterns="/druid/*",  
    initparams={  
         @webinitparam(name="allow",value=""),// ip白名单(没有配置或者为空,则允许所有访问)  
         @webinitparam(name="deny",value=""),// ip黑名单 (存在共同时,deny优先于allow)  
         @webinitparam(name="loginusername",value="admin"),// 用户名  
         @webinitparam(name="loginpassword",value="123456"),// 密码  
         @webinitparam(name="resetenable",value="true")// 启用html页面上的“reset all”功能  
})  
public class druidstatviewservlet extends statviewservlet {  
    private static final long serialversionuid = -2688872071445249539l;  
}  

localvariabletableparameternamediscoverer类找不到

springboot3中没有这个类了,需要修改成org.springframework.core.standardreflectionparameternamediscoverer

到此这篇关于springboot2升级到springboot3过程相关修改的文章就介绍到这了,更多相关springboot2升级到springboot3内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com