wujun27 opened a new issue, #10278:
URL: https://github.com/apache/dubbo/issues/10278

   - [x ] I have searched the [issues](https://github.com/apache/dubbo/issues) 
of this repository and believe that this is not a duplicate.
   
   ### Environment
   
   * Dubbo version: 3.0.9
   * Operating System version: Mac OS
   * Java version: jdk11
   
   ### Steps to reproduce this issue
   参考 https://github.com/sofastack/sofa-boot/issues/998 
   在和Sofa boot整合多模块隔离Spring上下文时, 发现ReferenceAnnotationBeanPostProcessor  
postProcessBeanFactory 会销毁自己。
   ```
   if (beanFactory instanceof AbstractBeanFactory) {
               List<BeanPostProcessor> beanPostProcessors = 
((AbstractBeanFactory) beanFactory).getBeanPostProcessors();
               for (BeanPostProcessor beanPostProcessor : beanPostProcessors) {
                   if (beanPostProcessor == this) {
                       // This bean has been registered as BeanPostProcessor at 
org.apache.dubbo.config.spring.context.DubboInfraBeanRegisterPostProcessor.postProcessBeanFactory()
                       // so destroy this bean here, prevent register it as 
BeanPostProcessor again, avoid cause BeanPostProcessorChecker detection error
                       beanDefinitionRegistry.removeBeanDefinition(BEAN_NAME);
                       break;
                   }
               }
           }
   
   导致子模块的Spring 上下刷新时遇到DubboInfraBeanRegisterPostProcessor 执行 
postProcessBeanFactory时ReferenceAnnotationBeanPostProcessor不存在报错,项目无法启动.
   
   ```
        // In Spring 3.2.x, registry may be null because do not calling 
postProcessBeanDefinitionRegistry method before postProcessBeanFactory
           if (registry != null) {
               // register ReferenceAnnotationBeanPostProcessor early before 
PropertySourcesPlaceholderConfigurer/PropertyPlaceholderConfigurer
               // for processing early init ReferenceBean
               ReferenceAnnotationBeanPostProcessor 
referenceAnnotationBeanPostProcessor = beanFactory.getBean(
                   ReferenceAnnotationBeanPostProcessor.BEAN_NAME, 
ReferenceAnnotationBeanPostProcessor.class);
               
beanFactory.addBeanPostProcessor(referenceAnnotationBeanPostProcessor);
   
               // register PropertySourcesPlaceholderConfigurer bean if not 
exits
               
DubboBeanUtils.registerPlaceholderConfigurerBeanIfNotExists(beanFactory, 
registry);
           }
   ```
   
   If there is an exception, please attach the exception trace:
   
   ```
   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(DubboInfraBeanRegisterPos
 tProcessor.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(ExecutingR
 unnable.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)
   ```
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to