为什么报错?

正在回答

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

2回答

同学你好,如果只是单纯注入是可以用实现类接收注入对象的,但是往往开发中会对实现类做增强,如事务,日志等,实现增强的AOP技术是通过动态代理实现的,而spring默认是JDK动态代理,JDK动态代理是需要接口作为参数。 对实现类对象做增强得到的增强类与实现类是兄弟关系,两个是并列的,而不是泛化的关系

所以这里需要用接口接收,而同学贴出的图片,应该只是单纯注入哟~

祝学习愉快~

好帮手慕小脸 2020-12-15 13:44:38

同学你好,上述报错是因为注入时未正确编写注入时的对象

这里从ioc中注入接口的实例时应使用接口来接收注入的内容,而不是接口的实现类来接收。

祝学习愉快~

  • 提问者 焱羿 #1

    我注入的不是接口实现类的实例吗?

    2020-12-15 14:01:20
  • 好帮手慕小脸 回复 提问者 焱羿 #2

    同学你好,是的,但上述老师描述的是:这里应使用接口来接收注入内容

    因为Spring默认使用基于接口代理,CategoryServiceImpl实现CategoryService接口,最终Spring托管的对象是生成的代理类,所以你要注入CategoryServiceImpl就不成功

    祝学习愉快~


    2020-12-15 15:47:31
  • 提问者 焱羿 回复 好帮手慕小脸 #3

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

    2020-12-15 16:09:29
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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