MYBLOG

欢迎来到和风柒夜的博客~

SpringBoot2.5.3升级3.2.2踩坑记录

2025-04-27 17:11:43Java

1、包名替换

jakarta->javax

com.alibaba.fastjson->com.alibaba.fastjson2

3、springmvc路径匹配策略有调整

主要涉及拦截器的配置:

//之前这样配置,可以过滤/portal下的所有了路径,升级后这种写法不支持了
interceptorRegistration.excludePathPatterns("/portal/**");

建议增加配置回复之前的策略

# 恢复旧版路径匹配策略
spring.mvc.pathmatch.matching-strategy=ant-path-matcher

2、mybatis-plus+pagehelper升级 此处是重点!!!花了两天时间才解决!!!

SpringBoot2.5.3对应mybatis-plus-boot-starter版本为3.5.7,对应pagehelper-spring-boot-starter版本为2.1.0

但是!!!

mybatis-plus-boot-starter和pagehelper中的jsqlparser版本冲突,mybatis-plus-boot-starter是4.9pagehelper是4.7

启动程序会报错,重点是这个错误报的一头雾水,没有任何有用的提示,最后debugger调试半天,发现是mybatis的mapper类实例化时报错,大概意思是没找到mapper的bean,其实就是jsqlparser版本冲突的问题,mapper-bean没有注入成功

java.lang.IllegalArgumentException: Invalid value type for attribute 'factoryBeanObjectType': java.lang.String

最后解决方案如下:

 <properties>
<!-- 单独指定mybatis,mybatis.spring,jsqlparser的版本 -->
        <mybatis.version>3.5.16</mybatis.version>
        <mybatis.spring.version>3.0.3</mybatis.spring.version>
        <jsqlparser.version>4.9</jsqlparser.version>
  </properties>
<!-- 显式引入 JSqlParser -->
        <dependency>
            <groupId>com.github.jsqlparser</groupId>
            <artifactId>jsqlparser</artifactId>
            <version>${jsqlparser.version}</version>
        </dependency>
        <!-- MyBatis-Plus -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.7</version>
            <exclusions>
                <exclusion>
                    <groupId>org.mybatis</groupId>
                    <artifactId>mybatis</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.mybatis</groupId>
                    <artifactId>mybatis-spring</artifactId>
                </exclusion>
                <!-- 排除 PageHelper 可能引入的旧版本 JSqlParser -->
                <exclusion>
                    <groupId>com.github.jsqlparser</groupId>
                    <artifactId>jsqlparser</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <!-- 注意此处是agehelper-spring-boot-starter不是pagehelper,不然读不到springboot对应pagehelper的配置 -->
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>2.1.0</version>
            <exclusions>
                <exclusion>
                    <groupId>org.mybatis</groupId>
                    <artifactId>mybatis</artifactId>
                </exclusion>
                <!-- 排除 PageHelper 可能引入的旧版本 JSqlParser -->
                <exclusion>
                    <groupId>com.github.jsqlparser</groupId>
                    <artifactId>jsqlparser</artifactId>
                </exclusion>
                <exclusion>
                    <artifactId>mybatis-spring</artifactId>
                    <groupId>org.mybatis</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- 强制指定 MyBatis 和 MyBatis-Spring 版本 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>${mybatis.version}</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>${mybatis.spring.version}</version>
        </dependency>