只能注入接口

只能注入接口

我想问下生产环境项目为什么只能注入接口不能注入接口实现类

正在回答

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

1回答

同学你好,是可以注入接口实现类的,注入接口是为了解耦合。

    假如当前使用的数据库是MySql,那么实现类可能是“IUserDaoMySqlImpl”,但是随着系统的维护,可能后续需要更换为Oracle,那么实现类可能是“IUserDaoOracleImpl”。

    此时,如果使用的是具体的实现类的名字,那么当更换实现类时,就要将所有涉及的Java代码都进行更改,重新编译。但是如果使用的接口名,那么就只需要将实现类进行替换,并不会影响到原有的代码。

祝学习愉快!

  • 胖胖的工程师 提问者 #1

    我看百度为什么都是讲的jdk动态代理 注入实现类会导致代理失败 好乱

    2023-06-02 17:48:09
  • 同学你好,使用接口本质就是解耦,如果只是单纯注入是可以使用实现类注入的。

       但开发中可能会对实现类做增强,如:事务,日志等。 在代码底层实现增强的AOP技术是通过动态代理实现的,而spring默认是JDK动态代理,对实现类对象做增强得到的增强类与实现类是兄弟关系,所以不能用实现类接收增强类对象,只能用接口接收。

    祝学习愉快!

    2023-06-02 18:31:11
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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