wujun27
wujun27
> 能提供一个简单的 demo 不,我这边尝试复现下 @AlbumenJ https://github.com/wj-ddd-practice/multi-spring-context-demo
dubbo是在启动模块demo-application加入的dubbo依赖, Root Spring context触发了org.apache.dubbo.config.spring.context.DubboSpringInitializer#initialize,这块是没问题的。 接下来demo-service是个sofa module,sofa会给这个模块初始化一个独立的Spring 上下文, demo-service这个模块因为没有dubbo依赖,所以不会触发org.apache.dubbo.config.spring.context.DubboSpringInitializer#initialize。 但是demo-service的子beanFactory会从父beanFactory获取postBeanProcessBeans, 所以demo-service的子beanFactory refresh的时候会触发DubboInfraBeanRegisterPostProcessor#postProcessBeanFactory, 然而ReferenceAnnotationBeanPostProcessor在Root Spring上下文已经被自己销毁,所以模块的子Spring上下文和RootSpring上下文都找不到这个bean,最终报No bean named 'referenceAnnotationBeanPostProcessor' available。 demo-service模块本身就没有dubbo依赖,也不需要去触发org.apache.dubbo.config.spring.context.DubboSpringInitializer#initialize。 目前在本地,我把ReferenceAnnotationBeanPostProcessor如下这段代码注释掉以后就没有没问题的。 但不确定是否会有其他影响? 、、、 if (beanFactory instanceof AbstractBeanFactory) { List beanPostProcessors = ((AbstractBeanFactory)...
@AlbumenJ 大佬怎么看? 1. 把ReferenceAnnotationBeanPostProcessor 销毁自己这端代码去掉,但可能会产生哪些问题? 2. ReferenceAnnotationBeanPostProcessor 加个非空判断,如果ReferenceAnnotationBeanPostProcessor bean存在再触发addBeanPostProcessor逻辑