两个小问题

两个小问题

http://img1.sycdn.imooc.com//climg/5f4bb6180933ba9004170187.jpg

  1. 为什么在上面加了Service注解后departmentDao报错,但是可以使用,要怎么解决?

  2. 为什么在业务层的时候@Service不加在接口(像持久层那样),而加在实现类上面

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,在spring.xml中,我们配置了MapperScannerConfigurer类,自动扫描指定包下的接口和xml文件,将Dao接口生成代理注入到Spring,所以注解要写在接口上。如下:

http://img1.sycdn.imooc.com//climg/5f4c9cfd09b200ae10060193.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

好帮手慕阿慧 2020-08-31 11:50:29

同学你好,

1、departmentDao报错是因为我们把DepartmentDao的接口直接交给Spring管理了。而MyBatis底层又把xml也映射成DepartmentDao的实体类交给spring管理了。由于有两个DepartmentDao类型的对象,所以编译会报错。

同学可以添加注解:

@Qualifier("departmentDao")

如下图:

http://img1.sycdn.imooc.com//climg/5f4c734609795b7303640084.jpg

2、@Service注解要写在实现类上。因为@Service注解是把Spring容器中的Bean进行实例化,实现类可以实例化,而接口不能,所以要加在实现类上。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 慕标0359786 #1
    那为什么在持久层@Repository("departmentDao")这个注解写在接口上
    2020-08-31 13:53:24
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师