2 xiumu xiumu_ 于 2016.02.15 14:08 提问

Spring整合Mybatis关于Dao注入失败的问题求解

抛出异常

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'adminService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private pers.zww.grad.dao.IAdminDao pers.zww.grad.service.impl.AdminServiceImpl.adminDao; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [pers.zww.grad.dao.IAdminDao] 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), @org.springframework.beans.factory.annotation.Qualifier(value=adminDao)}

此为自动生成的Mapper,我加了注解@Repository
package pers.zww.grad.dao;

import org.springframework.stereotype.Repository;

import pers.zww.grad.vo.Admin;

@Repository("adminDao")
public interface IAdminDao {
int deleteByPrimaryKey(String id);

int insert(Admin record);

int insertSelective(Admin record);

Admin selectByPrimaryKey(String id);

int updateByPrimaryKeySelective(Admin record);

int updateByPrimaryKey(Admin record);

Integer getCountByName(String name);

Integer getCountByNameAndPass(String name,String password);

}
这是Service里面注入
package pers.zww.grad.service.impl;
、、、
@Service("adminService")
public class AdminServiceImpl implements IAdminService {

@Autowired
@Qualifier("adminDao")
private IAdminDao adminDao;

@Override
public int deleteByPrimaryKey(String id) {
    // TODO Auto-generated method stub
    return 0;
}

配置文件都已扫描过了,而且相关mybatis的如下:

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <!-- 自动扫描mapping.xml文件 -->
    <property name="mapperLocations" value="classpath:pers/zww/grad/mapping/*.xml"></property>
</bean>

<!-- DAO接口所在包名,Spring会自动查找其下的类 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="pers.zww.grad.dao" />
    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
</bean>

9个回答

Yiran8935
Yiran8935   2016.02.15 14:28
已采纳

自动扫描的包有没有加进去
<!-- 对web包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能 -->

xiumu_
xiumu_ 自动扫描是已经加进去了的 <context:component-scan base-package="pers.zww.grad.*"></context:component-scan>
2 年多之前 回复
Yiran8935
Yiran8935 这csdn也没做重复提交处理
2 年多之前 回复
Yiran8935
Yiran8935 <context:component-scan base-package="*"/>
2 年多之前 回复
Yiran8935
Yiran8935 <context:component-scan base-package="*"/>
2 年多之前 回复
Yiran8935
Yiran8935 <context:component-scan base-package="*"/>
2 年多之前 回复
xiumu_
xiumu_   2016.02.16 13:57

问题已解决,谢谢大家。

atalrjyb
atalrjyb 请问需要添加哪个监听器呢?
大约 2 年之前 回复
xiumu_
xiumu_ 回复kkkkilldead: 我的问题是我在配置的时候,漏加了监听器
2 年多之前 回复
xiumu_
xiumu_ 回复kkkkilldead: 我的问题是我在配置的时候,漏加了监听器
2 年多之前 回复
kkkkilldead
kkkkilldead 大哥,怎么解决的啊说一下啊,咋能干说一个已解决就完了呢啊
2 年多之前 回复
qq_20235895
qq_20235895   2016.11.18 23:54

大哥你这个问题解决了么,我遇到了,求教

daidaineteasy
daidaineteasy   Ds   Rxr 2016.02.15 14:56
 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
        <property name="typeAliasesPackage">
            <value>
                pers.zww.grad.vo
            </value>
        </property>
    <!-- 自动扫描mapping.xml文件 -->
    <property name="mapperLocations" value="classpath:pers/zww/grad/mapping/*.xml"></property>
</bean>
xiumu_
xiumu_ 回复晓呆同学: 嗯嗯,确实是的 。不过我把去掉了后还是出现这个问题
2 年多之前 回复
daidaineteasy
daidaineteasy private IAdminDao adminDao上边的@Qualifier("adminDao")这个和public interface IAdminDao上边的@Repository("adminDao") 注解其实是不需要加的
2 年多之前 回复
xiumu_
xiumu_ 不过这样试了后,还是报同样的错误
2 年多之前 回复
mlw519
mlw519   2016.02.15 15:03

你的注解加到实现类中,不要加接口类

mlw519
mlw519 回复zhao-ww: 这用myBatis,原来以为是iBatis。所以不要自己写实现类,实现是通过框架来时实现的,用@Resource(name = "adminDao")试试呢
2 年多之前 回复
xiumu_
xiumu_ 回复Yiran8935: 我试了实现,不过实现的话mybatis mapper接口就没用了
2 年多之前 回复
Yiran8935
Yiran8935 回复zhao-ww: 先实现看看没有没有问题,问题慢慢排查嘛
2 年多之前 回复
xiumu_
xiumu_ 不过这个接口方式并没有实现类
2 年多之前 回复
diaoliwei2
diaoliwei2   Rxr 2016.02.15 16:37

@Repository("adminDao")为什么注解在接口上呢

xiumu_
xiumu_ 因为该接口的实现类是mybatis动态自行生成的,我把接口上的注解去掉了后来也还是一直出现这个问题
2 年多之前 回复
fanst_
fanst_   2016.02.15 22:49
<context:component-scan base-package="pers.zww.grad.*">
只写pers.zww.grad试下,我自己的工程加上.*后就报找不到bean了,可能是不支持这样写。
另外@Autowired默认按照类型注入,可以不指定bean的名称。
xiumu_
xiumu_ IAdminService adminService=(IAdminService) applicationContext.getBean("adminService"); int count= adminService.getCountByName("3");是可以得到结果的。只是直接在web运行时会出错
2 年多之前 回复
xiumu_
xiumu_ 嗯嗯,试了也都可以,不过都是那个问题。 不过我再junit里面测试,
2 年多之前 回复
Royal_lr
Royal_lr   Ds   Rxr 2016.02.16 11:40

估计是包扫描的问题吧,,

nicetp
nicetp 回复胖胖的半山兄: 请问解决了吗
接近 2 年之前 回复
xiumu_
xiumu_ 嗯嗯应该就是配置里面扫描问题了,我试了在main里面是可以运行不出错的,但一旦运行到web上就立马出错了,泪奔了没发现究竟哪里错误
2 年多之前 回复
axiaoming
axiaoming   2016.12.05 23:33

我也想知道,我的也是不能注入呢,不是不需要实现么

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
springMVC mybatis整合dao接口(mapper接口) spring注入失败
整合springmvc和mybatis时,启动服务报错如下:org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [demo.dao.PersonMapper] found for dependency: expected at least 1 bean which qu
springMVC mybatis dao接口(mapper接口)注入失败
报的错误是: No qualifying bean of type [com.*.*.*.*.*.dao.UserDao] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotatio
springboot与mybatis整合dao层不能注入的问题
需要重写VFS,并将其在mybatis整合类中指定为VFS的实现类public class SpringBootVFS extends VFS { private final ResourcePatternResolver resourceResolver; public SpringBootVFS() { this.resourceResolver = new Path
SpringBoot+Mybatis整合报,service注入失败,dao注入失败,
问题:com.sun.org.apache.xerces.internal.impl.XMLEntityScanner$1 会导致,报,service注入失败,dao注入失败, 学习springboot整合mybaits.,根据demo做. 看整个流程都没问题了,因为配置本身就不多. 配置文件主要东西都在application.properties中了.
springboot整合mybatis dao注入失败 这个是一篇提问的稿子啊啊啊啊,悬赏不够只能写在这里了
我没有币了只能写在这里了,望路过的大神帮忙解决一下。。。 我的问题就是springboot整合mybatis的时候,在dao层进行测试的时候(在service直接注入dao也是这个错),报异常,异常下面图片有详细的,我就不描述了,dao接口加了@Repository这个注解,按理说应该是已经注入了的,只是不知道启动的时候为什么会报错,求大神路过解决一下~~~~~~~~~ 下面贴出我的相
SpringBoot整合Mybatis无法注入dao
解决:    在springBoot启动类或在Mybatis类上添加注解@MapperScan,标识扫描dao接口所在的包
springmvc和mybatis结合 可以直接把用mybatis写的接口注入到service层
http://bbs.csdn.net/topics/390773239今天我看别人用springmvc和mybatis结合的代码  以前我用SSH框架的 发现了个问题 public interface MmMapper {public List&amp;lt;HashMap&amp;lt;String, Object&amp;gt;&amp;gt; mmQueryByPage(@Param(&quot;mm&quot;)HashMap&amp;lt;St...
通过Spring整合MyBatis实现DAO层不用写实现类
配置文件spring.xml <!-- spring的核心配置 --> <!-- 加载连接池配置数据 --> <context:property-placeholder location="classpath:mysql.properties" /> <!-- 配置c3p0连接池,目的:管理数据库连接 --> <bean id="dataSource" class
spring整合mybatis时报空指针异常:service注入得不到Mapper接口的实例化对象(已解决)
解决方法在下边↓↓问题一:    mabite中Mapper接口的实例化对象找不到,显示为NULL这是我的配置,还有运行时报的错这几个文件都是使用反向工程生成的,应该没有错。运行结果显示tUserMapper为null问题二:还有,使用ssm框架写web工程的时候还出过这么一个错:org.apache.ibatis.binding.BindingException:         Invalid...
SpringBoot Mybatis注入异常
这几天在研究Spring Boot框架,早Spring Boot和Mybaits结合的时候,我在Action层面住入Service的代码没有报错,但是在Service注入Mybatis的Mapper接口的时候,报了如下的错误。 java.lang.Object.wait(Native Method) java.lang.ref.ReferenceQueue.remove(ReferenceQu