SSM整合:Failed to load ApplicationContext--Error creating bean with name 'sqlSessionFactory'

前几天在整合ssm遇到的一个头疼很多天的问题

在用mybatis逆向工程生成mapper完成之后,加之自己对生成的mapper改进了一些自己需要的sql方法,准备做一个单元测试在这里插入图片描述
用的是注解的方式从ioc容器获取一个departmentMapper的对象,当Run这个方法的时候,报了下面的错误在这里插入图片描述

仔细看一下这个图片,Failed to load ApplicationContext,所以问题肯定出现在我的spring配置文件里面。
在网上查了很多方法,但是都没解决我的问题,这个报错卡了一天,起初以为是开发工具的问题,idea换到了myeclipse,但是还是报这个错误。又在网上找了很多,最后终于发现,在用mybatis逆向工程生成mapper文件的时候,在spring配置文件里面加了一句

<property name="mapperLocations" value="classpath:mapper/*.xml"></property>

用来指定mapper文件生成的位置的,当进行这个单元测试的时候,mapper文件已经生成了,这个时候再次去Run的时候,这个地方就会再被扫一遍,所以就报了上面的错误。
具体原因我也不清楚,可能是因为mybatis逆向工程 检测到这个就会在生成一遍?所以当mapper文件已经存在的时候,就会报错。
所以只需要把

<property name="mapperLocations" value="classpath:mapper/*.xml"></property>

注释掉就可以运行测试了。网上也有小伙伴说自己用的junit5就没遇到这个问题(因为我用的是junit4)。所以希望这个方法对遇到这个问题的小伙伴有帮助。
如果有知道具体原因的大佬,请把链接或者评论发在评论区让我拜读一下,也欢迎大家在评论区讨论。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值