Closed wujun27 closed 2 years ago
日志设置为DEBUG,发现sofa module再启动module spring上下文前ReferenceAnnotationBeanPostProcessor的bean被销毁了,导致Root Spring上下文里找不到这个bean。 class org.apache.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor was destroying!
2022-07-06 10:04:36.876 DEBUG 10150 --- [ main] o.s.b.f.s.DefaultListableBeanFactory : Creating shared instance of singleton bean 'referenceAnnotationBeanPostProcessor' 2022-07-06 10:04:36.878 DEBUG 10150 --- [ main] o.s.b.f.s.DefaultListableBeanFactory : Creating shared instance of singleton bean 'dubboReferenceBeanManager' 2022-07-06 10:04:36.918 DEBUG 10150 --- [ main] o.s.c.e.PropertySourcesPropertyResolver : Found key 'spring.application.name' in PropertySource 'configurationProperties' with value of type String 2022-07-06 10:04:36.918 DEBUG 10150 --- [ main] o.s.c.e.PropertySourcesPropertyResolver : Found key 'spring.application.name' in PropertySource 'environmentProperties' with value of type String 2022-07-06 10:04:37.336 INFO 10150 --- [ main] f.a.ReferenceAnnotationBeanPostProcessor : class org.apache.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor was destroying! 2022-07-06 10:04:37.336 DEBUG 10150 --- [ main] o.s.b.f.s.DefaultListableBeanFactory : Creating shared instance of singleton bean 'org.springframework.context.event.internalEventListenerProcessor' 2022-07-06 10:04:37.339 DEBUG 10150 --- [ main] o.s.b.f.s.DefaultListableBeanFactory : Creating shared instance of singleton bean 'preserveErrorControllerTargetClassPostProcessor' 2022-07-06 10:04:37.342 DEBUG 10150 --- [ main] o.s.b.f.s.DefaultListableBeanFactory : Creating shared instance of singleton bean 'cn.hutool.extra.spring.SpringUtil' 2022-07-06 10:04:37.346 DEBUG 10150 --- [ main] o.s.b.f.s.DefaultListableBeanFactory : Creating shared instance of singleton bean 'sofaModuleBeanFactoryPostProcessor' 2022-07-06 10:04:37.348 DEBUG 10150 --- [ main] o.s.b.f.s.DefaultListableBeanFactory : Creating shared instance of singleton bean 'sofaModulePostProcessorShareManager' 2022-07-06 10:04:37.348 DEBUG 10150 --- [ main] o.s.b.f.s.DefaultListableBeanFactory : Creating shared instance of singleton bean 'com.alipay.sofa.boot.autoconfigure.isle.SofaModuleAutoConfiguration' 2022-07-06 10:04:37.349 DEBUG 10150 --- [ main] o.s.b.f.s.DefaultListableBeanFactory : Autowiring by type from bean name 'sofaModulePostProcessorShareManager' via factory method to bean named 'org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@2a3c96e3' 2022-07-06 10:04:37.351 DEBUG 10150 --- [ main] o.s.b.f.s.DefaultListableBeanFactory : Autowiring by type from bean name 'sofaModuleBeanFactoryPostProcessor' via factory method to bean named 'sofaModulePostProcessorShareManager'
找到原因: ReferenceAnnotationBeanPostProcessor postProcessBeanFactory 处理完会清理掉自己。
org.apache.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor
if (beanFactory instanceof AbstractBeanFactory) {
List
if (beanFactory instanceof AbstractBeanFactory) {
List
感觉是dubbo的问题,本身没问题,但是在sofa 多模块Spring上下会触发这个bug
dubbo3 修复掉这段逻辑以后就ok了。 关闭这个issue,我提交到dubbo去
Describe the bug
我的项目结构: uims-service: 业务能力模块项目, 集成了runtime-sofa-boot-starter并暴露了jvm的sofa service. `
`
uims-application module 是启动模块,依赖了isle-sofa-boot-starter,dubbo 和uims-service, 配置了dubbo provider把uims-service的sofa service 注册成dubbo provider. `
`
项目启动的时候, uims-service刷新spring上下文报错:
022-07-05 14:04:45.362 ERROR 2277 --- [y.uims2.service] com.alipay.sofa : SOFA-BOOT-01-11002: Refreshing Spring Application Context of module com.my.uims2.service got an error org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'referenceAnnotationBeanPostProcessor' available at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:872) at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1344) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:309) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:283) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:213) at org.apache.dubbo.config.spring.context.DubboInfraBeanRegisterPostProcessor.postProcessBeanFactory(DubboInfraBeanRegisterPostProcessor.java:68) at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:325) at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:147) at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:746) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:564) at com.alipay.sofa.isle.stage.SpringContextInstallStage.doRefreshSpringContext(SpringContextInstallStage.java:313) at com.alipay.sofa.isle.stage.SpringContextInstallStage$1.run(SpringContextInstallStage.java:278) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at com.alipay.sofa.common.thread.ExecutingRunnable.run(ExecutingRunnable.java:84) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829)
dubbo的referenceAnnotationBeanPostProcessor 在sofa模块和root spring上下文都没有找到。
将dubbo3.0 版本回退到dubbo2.8.5是成功的。 是不是sofa boot 集成dubbo3.0 有什么问题?
Additional context
项目依赖: uims-service-dependency-tree.log uims-application-dependency-tree.log