mybatis与spring整合报错Error creating bean with name 'sqlSessionFactory' defined in class path resource...

本文分享了在尝试整合MyBatis与Spring框架时遇到的一个典型错误:无法解析到mybatis配置文件。通过对比错误代码与正确代码,帮助读者避免类似的配置陷阱。

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

今天做mybatis与spring整合的时候报了一个错误,如下

Caused by: org.springframework.beans.factory.BeanCreationException:

Error creating bean with name 'sqlSessionFactory' defined in class path resource [config/applicationContext.xml]:

Cannot resolve reference to bean 'config/mybatis.xml' while setting bean property 'configLocation';

nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'config/mybatis.xml' is defined

英文不太好,大体理解了一下,好像是说在applicationContext.xml中注册configLocation的地方有错

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation" ref="config/mybatis.xml"></property>
</bean>

仔细检查了一下代码,发现还真是有错,唉,正确的代码如下

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation" value="config/mybatis.xml"></property>
</bean>

给我一个支点,我能撬动整个地球,给我一个错误,我能搞挺整个项目抓狂

### Spring 创建 `sqlSessionFactory` Bean 错误解决方案 当创建名为 `sqlSessionFactory` 的 bean 出现错误时,通常是因为版本兼容性问题或配置不正确引起的。具体来说,在当前情况下,异常信息表明存在方法找不到的问题: ```plaintext java.lang.NoSuchMethodError: org.apache.ibatis.session.Configuration.setDefaultEnumTypeHandler(Ljava/lang/Class;)V ``` 这提示 MyBatis 版本 MyBatis-Spring 版本之间可能存在冲突。 #### 配置检查调整 为了确保 `sqlSessionFactory` 正确初始化并避免上述错误,建议按照以下方式进行配置和依赖管理[^1]。 #### Maven 依赖配置 确认项目中的 POM 文件包含适当版本的 MyBatisMyBatis-Spring 库,并保持两者之间的版本匹配。例如: ```xml <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.x</version><!-- 确认使用稳定版 --> </dependency> <dependency> <groupId>org.mybatis.spring</groupId> <artifactId>mybatis-spring</artifactId> <version>2.y.z</version><!-- 对应 mybatis 版本 --> </dependency> ``` 注意替换占位符为实际可用的具体版本号。 #### spring-dao.xml 中 SqlSessionFactory 定义 在 XML 配置文件中定义 `SqlSessionFactoryBean` 并指定数据源和其他必要的属性。以下是推荐的做法之一[^2]: ```xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 数据库连接池配置省略 --> <!-- SQL Session Factory configuration --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="yourDataSource"/> <property name="mapperLocations" value="classpath*:mappers/*.xml"/> <!-- 如果需要自定义 MyBatis 设置可加入如下配置 --> <!--<property name="configuration">--> <!--<bean class="org.apache.ibatis.session.Configuration">--> <!--<!– 自定义配置项 –>--> <!--</bean>--> <!--</property>--> </bean> <!-- Mapper 扫描器用于自动发现接口映射 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.example.mappers"/> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> </bean> </beans> ``` 以上配置实现了通过 `MapperScannerConfigurer` 来简化 DAO 层实现类的手动声明工作,减少了重复劳动的同时提高了灵活性[^3]。 此外,如果仍然遇到相同错误,则可能意味着所使用的 MyBatis 或者 MyBatis-Spring 版本过低而不支持某些新特性(如默认枚举处理器)。此时应当考虑升级这些组件至最新稳定版本以获得更好的功能支持以及修复已知缺陷。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值