创建工厂类,获得的类这里不应该是实现类吗,为什么写的是接口UserService

创建工厂类,获得的类这里不应该是实现类吗,为什么写的是接口UserService

正在回答 回答被采纳积分+1

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

2回答
好帮手慕小班 2020-08-12 10:00:39

同学你好,这里可以这样理解:

applicationContext.getBean("userService")获取到的是Spring中的UserServiceImpl

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

对应这个表达式

UserService userService = (UserService) applicationContext.getBean("userService");

就可以理解为这样的形式:

UserService userService = (UserService)new UserServiceImpl() ;

还是由接口引用指向具体的实现类对象。

所以并不是同学说的接口进行实例化了,而是接口的引用指向具体的实现类。

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

好帮手慕小班 2020-08-11 18:49:00

同学你好,并不是与getBean有关系,而是因为当前的applicationContext.getBean("userService")获取到的是创建权交给了Spring的userService

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

获取到这个userService

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

如上表达式就可以这样理解: UserService userService = (UserService) Spring中获取到的userService  将UserService指向 UserServiceImpl 。

如果同学想表达的不是这个意思,还麻烦同学具体描述一下。

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

  • 提问者 Richard1001 #1
    还是不懂,就是userService这里是接口,为什么可以实例化
    2020-08-11 20:14:34
  • MySuperhero 回复 提问者 Richard1001 #2

    找个厂上班吧


    ?

    2021-04-04 13:37:49
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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