问答详情
源自:2-3 singleton、prototype

Bean1类中的createBean2()这个抽象方法并没有实现,为何在xml中配置了,就能从中获取bean2对象了?

视频15分40秒处老师提出的问题,对其中代码有疑问:

Bean1类中的createBean2()这个抽象方法并没有实现,为何在xml中配置了,就能从中获取bean2对象了?


提问者:no4990 2019-09-05 01:22

个回答

  • qq_慕仔3049912
    2023-10-02 19:23:57

    在测试类中没有具体实现`createBean2()`方法,但是在Spring的配置文件中使用了`<lookup-method>`标签来定义了`createBean2()`方法的实现。

    <lookup-method>标签用于在运行时动态生成一个返回类型为指定类的对象的方法。

    在配置文件中的这行代码:<lookup-method name="createBean2" bean="bean2"/>

    表示当调用`createBean2()`方法时,实际上会返回`bean2`这个Bean的实例。

    因此,当执行`bean1.printBean2()`方法时,会调用`createBean2()`方法,并返回`bean2`这个Bean的实例。

    所以在多次调用`bean1.printBean2()`方法时,会产生多个`Bean2`对象的实例。


  • weixin_慕娘6405100
    2021-08-17 10:08:51

    应该就和set方法注入一样配置一个<property> 标签,只不过是换成了<lookup-method>标签

  • EndingWar
    2019-09-25 09:53:54

    还记得前面spring-core 包嘛,这里是因为spring 应用了CGLIB类库,调用xml配置的方法的时候生成了动态代理类,简单来说spring 帮你实现了这个方法

  • 甩帅衰
    2019-09-14 04:39:43

    返回值是Bean2对象