关于spring dao接口无法注入的问题。

leiyangtian 2018-04-24 01:10:44
这个是UserMapper:


这样子写是正确的,程序可以正常运行:


如下,会提示没有bean:


错误信息:
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [dao.UserMapper] 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)}
...全文
1298 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
在启动类上加 @MapperScan({"com.wangc.demo.dao"}) 注解
leiyangtian 2018-04-24
  • 打赏
  • 举报
回复
解决方案: @Autowired是根据类型进行自动装配的。如果当Spring上下文中存在不止一个指定类型的bean时,就会抛出BeanCreationException异常;如果Spring上下文中不存在指定类型的bean,也会抛出BeanCreationException异常。我们可以使用@Qualifier配合@Autowired来解决这些问题。 @Qualifier("XXX") 中的 XX是 Bean 的名称,所以 @Autowired 和 @Qualifier 结合使用时,自动注入的策略就从 byType 转变成 byName 了。 来源:https://blog.csdn.net/kirrin/article/details/47831845
leiyangtian 2018-04-24
  • 打赏
  • 举报
回复
但是这里出现一个新问题,如果不指定@Service的名字,autowired注入方式会找到2个bean






显示将@Service改为@Service(“userService”)则不会报错。
leiyangtian 2018-04-24
  • 打赏
  • 举报
回复
哎。。。刚刚看了下日志发现mybatis的配置文件没有加载。 顺带发现了一个路径问题: Maven项目,application-context.xml、db.properties文件均放置在src/main/resources目录下,Tomcat部署项目,src/main/resources目录下的配置文件默认位置为:{项目名}/WEB-INF/classes,而Spring却在项目根目录下寻找,肯定找不到,因此,配置时指定classpath目录下寻找即可。 解决方案如下:   <context:property-placeholder location="classpath:db.properties" /> 来源:https://www.cnblogs.com/gotodsp/p/5773660.html
yjsl__ 2018-04-24
  • 打赏
  • 举报
回复
mybatis配置没有配好
幽饮烛 2018-04-24
  • 打赏
  • 举报
回复
在接口上用 @Repository 是 spring boot 才有的功能吧?
  • 打赏
  • 举报
回复
userMapper 映射 set 方法,在方法上写@autowired
那一抹大伤感 2018-04-24
  • 打赏
  • 举报
回复
@Autowired //自动装配ByType @Resource(type=DataService.class) //自动装配ByName 使用name属性时用byname 使用type时用bytype //@Qualifier //ByNmame注入 private DataService dataServices; 自己看吧

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧