spring整合mybatis报错:根元素 "beans" 必须匹配 DOCTYPE 根 "null"、通过注解引入spring上下文配置文件、@ImportResource注解引入xml配置依赖注入

spring-mybatis背景

其实也整合了springMVC,而且关键就在这里:在web.mxl中没有做任何配置,全部使用@Configuration注解通过Java代码完成,访问数据库之前页面是可以正常打开的。需要访问数据库的时候,参考mybatis官网对mybatis-spring进行了整合。由于感觉mybatis还是在xml文件中编写sql比较方便,好像xml配置也更加全面、容易理解。所以,选择mybatis配置文件以及映射文件都选择了xml方式而没有使用注解。链接:
mybatis指导手册
mybatis-spring
是时候启动项目啦!
轰轰轰!!!。。。。。。。

找不到sqlSession

打包完成,启动:
在这里插入图片描述
找不到sqlSession这个bean,我明明在mybatis配置文件中配了,beanId也没问题。我去,忘了把mybatis配置文件(spring-mybatis.xml)文件引入总的sprign配置文件(spring-all.xml)了。而且,也没有把spring-all.xml文件引入到项目中呢。
为了保持web.xml的纯洁性,我决定也通过注解来引入。网上搜了下,可以用@PropertSource注解。

通过@PropertySource引入spring配置文件

在这里插入图片描述
再启动,轰轰轰轰轰。。。。又爆红
在这里插入图片描述
这个报错一时看不出来是哪儿出了问题,百度一下,大概是XML文件的命名空间和实际配置内容对不上。
mapper.mxl文件(我命名为了:user.xml)
在这里插入图片描述
spring-all.xml文件:
在这里插入图片描述
spring-mybatis.xml文件:
在这里插入图片描述
类似的报错挺多的。有人说是beans配置重复了、有的是命名空间配置不对,折腾了一波,好像每个人最终解决的办法都不一样,反而更加迷惑了,他们的解释并不适合我呀。

做试验了----控制变量

既然问题是把spring-all引入之后导致的,那么可以确定问题就是spring配置文件引入、加载的过程中出问题了。目前只能一步一步缩小错误的范围了,想起在学校做实验时,控制一部分变量不变,然后改变另一部分变量,然后查看影响,从而确定变量是否影响。是时候展现真正的技术了
具体到这次“试验”:不变的是,spring-all.xml文件,变得是把它引入的项目,我这次把注解引入spring-all.mxl注释了,通过web.xml把它引入。
在web.xml中添加如下配置:
在这里插入图片描述
第3次启动项目,蹦,就调到了首页,燃爆了!
至此,确定配置文件没问题,而是引入方式不对。

纸上得来终觉浅

我整合springMVC是从读《Spring In Action》开始的。忽然想到,虽然书上首先推荐的就是注释配置这种放入,但是对于xml配置也有介绍的。好像还有介绍多种配置方式复用的,赶紧打开书。
果然呀!而且是在第2章,装配Bean中就说了,只是之前一直没用到,慢慢也就忘了。
在这里插入图片描述
使用**@ImportResource注解来引入spring配置文件。
在这里插入图片描述
启。。。动,还来???
在这里插入图片描述
大意就是:spring上下文重复了,把注解引入的删了就好了。
终于乖乖跳到首页了。

后记

刚碰到这个报错时真的好懵逼,有种无路可走的绝望,然后一顿操作猛如虎也没卵用,切记:冷静!冷静!冷静
对待bug必须像对待爱人那样温柔,还必须像对待敌人那样冰冷!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值