Spring 整合 MyBatis,Mapper注入失败

出现问题,分析原因

今天拿出在做的项目,启动运行,报错:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.liu.dao.UserInfoMapper] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

打开Service层代码,注入UserInfoMapper的代码没有异常,于是我脑海中想到可能是下面的几个问题:

  1. spring-mybatis整合配置文件没有扫描到
  2. 没有扫描到mapper.xml文件
  3. mapper.java和mapper.xml之间没有联系起来
  4. spring-mybatis整合配置文件中,配置的属性值在properties文件中,但是该properties文件没有扫描到或者是值错误(但是这个一般控制台都会锁定到属性值错误,可能性不大)

解决问题

1、检查spring-mybatis配置文件,在web.xml中已经配置扫描到了,谨慎起见还是检查一下:

ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:META-INF/config/spring/spring-mybatis.xml");
UserInfo bean = ac.getBean(UserInfo.class);
bean.getUserInfoById(10001L);

在service的初始化方法中,执行上述代码,是没有问题的,所以配置文件是扫描到了的,排除第一个原因

2、 检查spring-mybatis配置文件

  <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="configLocation" value="classpath:META-INF/config/mybatis/sqlmap.xml" />
        <property name="mapperLocations"
                  value="classpath:com/liu/dao/mapping/*.xml" />
    </bean>

    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage"
                  value="com.liu.dao" />
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
    </bean>

没有问题

3、检查UserInfoMapper.java和UserInfoMapper.xml文件,发现UserInfoMapper.xml中对po的配置路径是:

com.liu.po.com.liu.po.UserInfoMapper.java

所以问题出现在这里,mapper之间没有联系起来,导致注入失败,这个问题的产生是上一次项目关闭前,手贱改了一下包路径,IDEA却给我重复了路径。。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值