这里的注入不太理解

这里的注入不太理解

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

为什么注入的是接口而不是实现类呢

是因为@Service标记在实现类上吗?

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

正在回答

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

2回答

同学你好,JDK动态代理同学理解的不错。同学说的Dao层注解都是接口,Service层的注解都是实现类,是指dao层的注解在接口上,service层的注解在实现类上吗?这里因为Dao层中没有实现类去实现接口,所以将注解写在接口上。

祝:学习愉快~

好帮手慕阿满 2019-09-04 10:38:48

同学你好,这里注入的是接口,实际上注入的是接口实现类。如果只是单纯数据注入,声明为实现类也是可以接收注入对象的。但在开发中往往会对实现类增强,如事务、日志等,这些是通过AOP动态代理实现的。springAOP使用动态代理,对实现类对象做增强得到的增强类与实现类是兄弟关系,所以不能用实现类接收增强类对象,只能用接口接收。

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

  • 提问者 ShanaZ #1
    我可以这样理解吗: JDK动态代理:对实现接口的类进行代理,而不是针对类,目标类型实现的接口都将被代理,可为任何接口创建代理 ,原理是运行期间创建一个接口的实现类来完成对目标对象的代理。 那请问下Dao层注解的都是接口,Service层注解的都是实现类,为什么会有这种区别呢
    2019-09-04 16:31:55
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
SSM主流框架入门与综合项目实战2018版
  • 参与学习           人
  • 提交作业       205    份
  • 解答问题       4317    个

Java中非常实用的SSM整合开发内容,从Spring开始,到MyBaits的进阶内容,再到SpringMVC的应用,最后是SSM整合开发案例,逐步深入,助你成长为一名Java工程师!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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