视频15分40秒处老师提出的问题,对其中代码有疑问:
Bean1类中的createBean2()这个抽象方法并没有实现,为何在xml中配置了,就能从中获取bean2对象了?
在测试类中没有具体实现`createBean2()`方法,但是在Spring的配置文件中使用了`<lookup-method>`标签来定义了`createBean2()`方法的实现。
<lookup-method>标签用于在运行时动态生成一个返回类型为指定类的对象的方法。
在配置文件中的这行代码:<lookup-method name="createBean2" bean="bean2"/>
表示当调用`createBean2()`方法时,实际上会返回`bean2`这个Bean的实例。
因此,当执行`bean1.printBean2()`方法时,会调用`createBean2()`方法,并返回`bean2`这个Bean的实例。
所以在多次调用`bean1.printBean2()`方法时,会产生多个`Bean2`对象的实例。
应该就和set方法注入一样配置一个<property> 标签,只不过是换成了<lookup-method>标签
还记得前面spring-core 包嘛,这里是因为spring 应用了CGLIB类库,调用xml配置的方法的时候生成了动态代理类,简单来说spring 帮你实现了这个方法
返回值是Bean2对象