[java BUG]springboot3.X在启动类添加mapperScan注解导致服务启动失败的问题排查

项目场景:

因为springboot3的如火如荼,我下载了jdk17,开始摸索这个新的springboot版本。
熟悉技术的一个途径是通过视频文字涉猎其他人的经验,另一个途径即为上手实践,所以我准备把自己之前的jdk8,使用springboot2.X的项目改为3.X的实现。


问题描述

简单地建了一个mapper文件夹,在其中先写一个AdminMapper,然后就在启动类上加了一个mapperScan的注解,启动服务,哦豁,失败了。

import com.example.hrms.entity.Admin;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;

public interface AdminMapper extends BaseMapper<Admin> {
}
@SpringBootApplication
@MapperScan("com.example.hrms.mapper")
public class HrmsApplication {

    public static void main(String[] args) {
        SpringApplication.run(HrmsApplication.class, args);
    }
}

在这里插入图片描述

原因分析:

从报错日志上看,Invalid value type for attribute 'factoryBeanObjectType': java.lang.String 这个错误,先确认了一遍自己的mapper是否写错,毕竟也经常粗心大意。
然后找了一遍度娘,看到springboot3.X,mybatisplus的版本应该>=3.5.3,将版本改完后,仍然没有解决问题。
作者使用的springboot版本如下

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.2.3</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.3</version>
</dependency>

然后继续度娘,了解到以下两点

mybatis-plus-boot-starter 通常是用于支持较早版本的 Spring Boot,比如 Spring Boot 2.x系列。
mybatis-plus-spring-boot3-starter 则是为了支持较新的 Spring Boot 3.x系列而设计的。随着 Spring Boot 的版本更新,可能会有一些 API 变动或新特性加入,因此,针对特定版本的 Spring Boot Starter 会确保最佳的兼容性和利用最新的 Spring Boot 特性。


解决方案:

由此,将mybatisplus的artifactid改为以下内容,服务启动成功

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
    <version>3.5.5</version>
</dependency>

相关链接

SpringBoot3使用Mybatis/plus Invalid value type for attribute ‘factoryBeanObjectType‘: java.lang.String

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值