当前位置:   article > 正文

bean对象注入报错:Field in required a bean of type ‘‘ that could not be found.

required a bean of type

目录

问题现象:

问题分析:

前提:

建议:

解决方法:


问题现象:

今天在运行新项目的时候,出现了一下报错:

Field XxxUserExtDao in com.xxx.auth.service.controller.abs.BaseController required a bean of type 'com.xxx.auth.service.mapper.run.XxxUserExtDao' that could not be found.


问题分析:

前提:

        在完成上述操作之前,请先基于mybatis创建好dao层接口类对应的dao层实现类(一般都是以xml文件的形式,并确保mapper标签的namespace属性指定为dao层接口类的全路径。


从报错信息可知:

这是因为spring的Ioc容器在注入bean对象的时候,在 BaseController 类中检测到了 @Autowired 注解,于是就会去寻找这个 XxxUserExtDao 对象的注入方式:

然后检测到 XxxUserExtDao 这个类中带有 @Component 注解,该注解用于除了@Controller(控制层)@Service(业务层)@Repository(dao层的实现类)之外,需要注入成bean对象的类;

注意:

这里值得一提的是:由于dao层的实现类对于项目结构而言,太冗余了,每写一个dao层接口,就得手写一个实现类,于是我们可以通过注解的方式,来实现自动创建dao层实现类,而不再需要自己手动创建实现类和添加@Repository注解了,方式有两种:

1. 在 dao层接口类 上添加 @Mapper注解。 作用:在接口类上添加了 @Mapper注解 ,在编译之后会自动生成相应的接口实现类:

2. 在 主类(启动类)上添加 @MapperScan注解,并指定dao层接口的包路径,在编译之后会自动生成相应的接口实现类

建议:

两种方法取其中一种即可,这里建议使用方法2,这样就不需要每个dao层都添加@Mapper注解了!!!


解决方法:

主类(启动类)上添加 @MapperScan注解,并指定dao层接口的包路径,在编译之后会自动生成相应的接口实现类

启动成功:

调用接口成功:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/125850
推荐阅读
相关标签
  

闽ICP备14008679号