PengningYang / jvm_test

0 stars 0 forks source link

测试issues #1

Open PengningYang opened 2 years ago

PengningYang commented 2 years ago

spring-cloud-starter-dubbo-2021.0.1.0 DubboMetadataAutoConfiguration 循环依赖问题


The dependencies of some of the beans in the application context form a cycle:

   targeterBeanPostProcessor defined in class path resource [com/alibaba/cloud/dubbo/autoconfigure/DubboOpenFeignAutoConfiguration.class]
      ↓
   com.alibaba.cloud.dubbo.metadata.repository.DubboServiceMetadataRepository (field private com.alibaba.cloud.dubbo.service.DubboMetadataServiceProxy com.alibaba.cloud.dubbo.metadata.repository.DubboServiceMetadataRepository.dubboMetadataConfigServiceProxy)
      ↓
   com.alibaba.cloud.dubbo.service.DubboMetadataServiceProxy
┌─────┐
|  com.alibaba.cloud.dubbo.autoconfigure.DubboMetadataAutoConfiguration (field private com.alibaba.cloud.dubbo.metadata.resolver.MetadataResolver com.alibaba.cloud.dubbo.autoconfigure.DubboMetadataAutoConfiguration.metadataResolver)
└─────┘
public class  DubboMetadataAutoConfiguration{
      @Autowired
      private MetadataResolver metadataResolver;

      @Bean
      @ConditionalOnMissingBean
      public MetadataResolver metadataJsonResolver(ObjectProvider<Contract> contract) {
      return new DubboServiceBeanMetadataResolver(contract);
      }
      ........
}

目前SCA 2021.0.1.0 对应适配的 Spring Boot 版本为 2.6.3 , 可 Spring Boot 版本为 2.6.0 版本后默认禁止循环依赖,对于spring-cloud-starter-dubbo-2021.0.1.0 中 DubboMetadataAutoConfiguration 任然存在循环依赖且还不只存在一处。查询资料后,采用Spring Boot 开启循环依赖支持的方式

spring.main.allow-circular-references=true

大家都是采用这个方法解决的吗?有什么更优雅的方式吗?

=============================================

At present, SCA 2021.0.1.0 corresponds to Spring Boot version 2.6.3, but circular dependencies are prohibited by default after Spring Boot version is 2.6.0. DubboMetadataAutoConfiguration still exists in spring-cloud-starter-dubbo-2021.0.1.0. Depends and not only exists in one place. After querying the data, use Spring Boot to enable circular dependency support

spring.main.allow-circular-references=true

Did everyone use this method to solve it? Is there any more elegant way?

PengningYang commented 2 years ago

hello

sssssss

hellossss

PengningYang commented 2 years ago

spring.main.allow-circular-references=true