这一节8分10秒的位置,为什么注入的是接口,却最终实现了接口实现类的功能?

这一节8分10秒的位置,为什么注入的是接口,却最终实现了接口实现类的功能?

在CategoryService这个接口的测试用例中,为什么可以通过接口实现它(CategoryService)的实现类CategoryServiceImpl的方法调用?

这里我没有理解。

这是Java原生就可以做到的吗?还是Spring或MyBatis隐式地做了什么?

写到这隐约觉得我有点蠢,好像把接口和继承弄混了,但又不是很确定.....

正在回答

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

1回答

同学你好,这里使用@Resource注解注入对象,@Resource注解就是把一个bean注入到当前的类中,这个注解代替了  接口   对象名=new   接口实现类();这样多态的对象创建形式,所以这里这样注入后可以调用实现类对应的方法;@Resource注入对象,该对象交由spring管理

祝学习愉快~

  • 如果CategoryService接口有多个实现类,那进行对象注入时,会注入哪个对象?

    是不是如果有多个实现类,就得这么注入了?

    @Resource
    private CategoryService categoryServiceImpl;
    // private CategoryService categoryService;


    2022-02-16 21:59:16
  • 同学你好,是可以的,或者可以给@Resource设置name属性,则按name在Ioc容器中将bean注入

    同学可以回顾下之前老师课程中的讲解

    https://class.imooc.com/lesson/2268#mid=52866

    祝学习愉快~


    2022-02-17 11:13:32
  • @Resource注入一个接口实现类,省略了new的过程,可以理解,毕竟实现类中有实现的方法,可以想得通。但是这里@Resource一个接口,并且在测试方法中直接调用了接口中的方法,就不理解了。因为接口并没有实现内部方法。怎么就@Resource之后,直接可以调用方法了呢?难道@Resource除了实现new 的操作,还有实现内部方法的操作吗?

    2022-06-14 00:46:10
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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