spring为什么可以通过实现类的接口来获取对象

weixin_42095889 2021-08-30 11:18:37

有没有大佬来解答下

...全文
451 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
MamyA 2021-09-03
  • 打赏
  • 举报
回复

反射+动态代理。~~~~Spring所有的Bean都离不开这两个过程,只是使用流程上有差异而已。

老王就是我 2021-09-01
  • 打赏
  • 举报
回复

首先加载所有类到jvm里,然后getBean()从jvm读取对象,然后获取后,判断是否等于接口类型,最后怼进三级缓存

终生学习code 2021-09-01
  • 打赏
  • 举报
回复

spring DI 和IOC看看DEbug一个类就只知道咋实现了

  • 打赏
  • 举报
回复 1

不太清楚你想问的到底是什么,你的实现类不是会有@Service吗,spring会解析你的实现类将实现类的名称(如果@service未指定名称)和实现类的类型作为键值对放入beanDefsMap(bean定义集合)中,spring getBean一开始是通过byType的方式从beanDefsMap中去获取对应接口的实现类,如果有多个实现类的话才会通过byName的方式。如果你的实现类实现了接口,那么在byTpye的时候就能从
bean定义中获取到实现类的构造方法进行newInstance()。个人理解=。=

weixin_42095889 2021-09-01
  • 举报
回复
@新时代_农民工 我昨天看了一下源代码,DefaultListableBeanFactory这个类中有getBeanByType这个方法,它会获取该类型的子类类型名字,然后通过子类型名字获取对象,然后将子类的名字和对象放入map中
qq_39936465 2021-09-02
  • 举报
回复
@weixin_42095889 java中有一句万物皆可bean听说过没有,建议你好好了解一下spring的基本原理,bean这应该是spring框架运行的基础。
weixin_42095889 2021-08-30
  • 打赏
  • 举报
回复

大佬,我问得是spring容器对象通过getBean方法,实参放的是接口得字节码对象,这里用得是动态代理吗?

qq_39936465 2021-08-31
  • 举报
回复
@weixin_42095889 先学习一下java 的反射机制
ITMXAPI 2023-10-17
  • 举报
回复
@qq_39936465 蚌埠住了,这种答非所问然后让来一顿教育的回复是我是吐了,真看不惯,你可以提出建议,但是回复前建议请给出回答,回答"是"或"否"然后再给出你后面那些话, 当然如果你想回复"这么基础.. 这么简单..."那你就不该来回答这个问题
=PNZ=BeijingL 2021-08-30
  • 打赏
  • 举报
回复

JDK动态代理

51,411

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧