SSM整合报错:‘org.mybatis.spring.mapper.MapperScannerConfigurer#0‘ Could not initialize class org.springf

本文讲述了作者在SSM整合中遇到的Spring启动时报错,源于MybatisPlus分页处理时引入了不同版本的spring-data-commons包导致冲突。通过排查配置文件和jar包,解决了问题并提醒读者注意常见错误源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

① 前置条件:今天在做SSM整合的时候,使用MybatisPlus插件进行自动化生成,并且不使用pageable类,而是自己接受page和pagesize做分页功能。所以这里不需要spring-data-commons包【划重点,后面大坑的铺垫】

② 具体报错:在配置好tomcat后,一启动完加载完配置,就马上报错(不跳转到浏览器页面)。

以下为报错截图:

org.springframework.web.context.support.XmlWebApplicationContext.refresh Exception encountered during context initialization - cancelling refresh attempt:org.springframework.beans.factory.BeanCreationException:Error creating bean with name 'org.mybatis.spring.mapper.MapperScannerConfigurer#0' defined in class path resource [applicationContext.xml]:Initialization of bean failed;nested exception is java.lang.ExceptionInInitializerError

③ 解决思路:

1.首先我们看报错信息,根据传统找错方式,我们拖动到第一个报错地方:可以看到【applicationContext.xml】的关键字,我们先检查自己多application.xml配置文件

2.配置文件没问题,我们就去检查service类是否都打上@service的注解,controller类是否都打上@controller注解,检查完配置文件之后,如果还是这个错,那么真相只有一个!是jar包问题!

3.检查jar包:

        Mybatis包、spring-Mybatis包、数据库驱动包、javaee包

        spring MVC的包

4.找出原因

spring MVC的包导入时,我导入了两个的spring-data-commons包的不同版本,所以导致了版本冲突。

④ 解决:将这两个包都删掉(反正不使用mybatisPlus自动生成的pageble类来作分页)。

⑤反思:大部分整合SSM时爆错都是配置文件或者jar包问题。

        大家只要先从这两个地方检查代码,相信马上就能解决问题。

最后的最后,大家如果检查完还是发现不了问题,可以发出来评论区,我帮你一起找~   ovo

### 使用 MyBatis 的 `MapperScannerConfigurer` 配置 SpringSpringMyBatis 的集成过程中,`MapperScannerConfigurer` 是一个非常重要的工具类。它能够自动扫描指定的基础包路径下的所有 Mapper 接口,并将其注册到 Spring 容器中作为 Bean 实例。 以下是关于如何通过 Spring XML 文件配置 `MapperScannerConfigurer` 的具体方法: #### 基本配置结构 在 Spring 的 XML 配置文件中定义 `<bean>` 节点来实例化 `MapperScannerConfigurer` 类。其核心属性包括以下几个部分: - **basePackage**: 指定需要扫描的 Mapper 接口所在的包名。 - **sqlSessionFactoryBeanName (可选)**: 如果存在多个 SqlSessionFactory,则可以通过此参数指明具体的工厂名称,默认值为 `"sqlSessionFactory"`。 示例如下所示: ```xml <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.example.mappers"/> </bean> ``` 上述代码片段表明会扫描 `com.example.mappers` 下的所有接口并为其创建代理对象[^1]。 如果项目中有自定义命名的 SqlSessionFactory 或者其他复杂场景需求时,可以进一步扩展配置如下: ```xml <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.wxisme.ssm.mapper"/> <property name="sqlSessionFactoryBeanName" value="customSqlSessionFactory"/> </bean> ``` 这里设置了 `sqlSessionFactoryBeanName` 属性指向名为 `customSqlSessionFactory` 的 bean 实例[^4]。 另外需要注意的是,在实际开发环境中通常还会配合单元测试框架一起使用,比如 JUnit 结合 Spring 提供的支持功能来进行验证操作。此时可以在测试类上加上特定注解以便加载上下文环境以及执行相关逻辑处理[^2]: ```java @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations={"classpath:spring-context.xml"}) public class YourTest { ... } ``` 最后值得一提的是,`MapperScannerConfigurer` 不仅简化了手动声明 mapper beans 的过程,还参与到了整个 spring ioc 初始化流程当中去——因为它本身实现了 `BeanDefinitionRegistryPostProcessor` 接口,所以在容器启动初期就会被执行从而完成必要的准备工作[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值