Discuss / 手写Spring / 疑问

疑问

Topic source

.

#1 Created at ... [Delete] [Delete and Lock User]
A依赖B,B被postProcessAfterInitialization处理后的对象会更新到B的BeanDefinition中,但是A中只能引用被postProcessBeforeInitialization处理后的B;
最终BeanDefinition中的B实例和A中引用的B实例不是一个,这样是可以的吗?不太清楚spring里是怎样的..

蓝天

#2 Created at ... [Delete] [Delete and Lock User]

A中引用的实例就应该是“被postProcessBeforeInitialization处理后的B”,就像文中所说“还是从业务逻辑出发,MvcController需要注入的UserService必须是UserServiceProxy,否则,事务不起作用。”

        // other beans are injected proxy instance:
        var inject1 = ctx.getBean(InjectProxyOnPropertyBean.class);
        var inject2 = ctx.getBean(InjectProxyOnConstructorBean.class);
        assertSame(proxy, inject1.injected);
        assertSame(proxy, inject2.injected);

另外,根据这块代码可以确定你说的“B实例”和“A中引用的B实例”是同一个

希望能解答你的疑问~


  • 1

Reply