赞
踩
目录
今天在运行新项目的时候,出现了一下报错:
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层接口的包路径,在编译之后会自动生成相应的接口实现类:
启动成功:
调用接口成功:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。