From 352fea338a3f9acf8120a6c1a601f0815915939e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=87=B4=E8=8A=82?= Date: Mon, 24 Oct 2022 13:06:15 +0800 Subject: [PATCH 1/4] optimize_inner_bpps --- .../runtime/SofaRuntimeAutoConfiguration.java | 24 +++++++----------- .../alipay/sofa/isle/test/FailModuleTest.java | 9 +++---- .../isle/test/PostProcessorShareTest.java | 11 ++++---- .../boot/test/RuntimeTestConfiguration.java | 12 +++------ ...untimeContextBeanFactoryPostProcessor.java | 10 ++++++++ .../ServiceBeanFactoryPostProcessor.java | 8 ++++++ .../SofaShareBeanFactoryPostProcessor.java | 16 ++++++++++-- .../share/SofaPostProcessorShareManager.java | 25 ++++++++++++++++--- .../configuration/RuntimeConfiguration.java | 12 +++------ .../SofaStartupIsleAutoConfiguration.java | 21 ++++++++++------ .../test/spring/RuntimeConfiguration.java | 12 +++------ 11 files changed, 96 insertions(+), 64 deletions(-) diff --git a/sofa-boot-project/sofa-boot-autoconfigure/src/main/java/com/alipay/sofa/boot/autoconfigure/runtime/SofaRuntimeAutoConfiguration.java b/sofa-boot-project/sofa-boot-autoconfigure/src/main/java/com/alipay/sofa/boot/autoconfigure/runtime/SofaRuntimeAutoConfiguration.java index 819affbc0..86e6fcc5f 100644 --- a/sofa-boot-project/sofa-boot-autoconfigure/src/main/java/com/alipay/sofa/boot/autoconfigure/runtime/SofaRuntimeAutoConfiguration.java +++ b/sofa-boot-project/sofa-boot-autoconfigure/src/main/java/com/alipay/sofa/boot/autoconfigure/runtime/SofaRuntimeAutoConfiguration.java @@ -16,13 +16,13 @@ */ package com.alipay.sofa.boot.autoconfigure.runtime; -import com.alipay.sofa.runtime.proxy.ProxyBeanFactoryPostProcessor; import com.alipay.sofa.runtime.SofaFramework; import com.alipay.sofa.runtime.api.client.ReferenceClient; import com.alipay.sofa.runtime.api.client.ServiceClient; import com.alipay.sofa.runtime.client.impl.ClientFactoryImpl; import com.alipay.sofa.runtime.component.impl.StandardSofaRuntimeManager; import com.alipay.sofa.runtime.configure.SofaRuntimeConfigurationProperties; +import com.alipay.sofa.runtime.proxy.ProxyBeanFactoryPostProcessor; import com.alipay.sofa.runtime.service.client.ReferenceClientImpl; import com.alipay.sofa.runtime.service.client.ServiceClientImpl; import com.alipay.sofa.runtime.service.impl.BindingAdapterFactoryImpl; @@ -46,10 +46,8 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.context.support.AbstractApplicationContext; import org.springframework.core.env.Environment; import java.util.HashSet; @@ -128,11 +126,8 @@ public static SofaRuntimeContext sofaRuntimeContext(SofaRuntimeManager sofaRunti @Bean @ConditionalOnMissingBean - public static RuntimeContextBeanFactoryPostProcessor runtimeContextBeanFactoryPostProcessor(BindingAdapterFactory bindingAdapterFactory, - BindingConverterFactory bindingConverterFactory, - SofaRuntimeContext sofaRuntimeContext) { - return new RuntimeContextBeanFactoryPostProcessor(bindingAdapterFactory, - bindingConverterFactory, sofaRuntimeContext); + public static RuntimeContextBeanFactoryPostProcessor runtimeContextBeanFactoryPostProcessor() { + return new RuntimeContextBeanFactoryPostProcessor(); } @Bean @@ -145,23 +140,22 @@ public static JvmFilterPostProcessor jvmFilterPostProcessor() { @ConditionalOnMissingBean @ConditionalOnClass(name = "com.alipay.sofa.isle.ApplicationRuntimeModel") @ConditionalOnProperty(value = "com.alipay.sofa.boot.enable-isle", matchIfMissing = true) - public static SofaShareBeanFactoryPostProcessor sofaModuleBeanFactoryPostProcessor(SofaPostProcessorShareManager shareManager) { - return new SofaShareBeanFactoryPostProcessor(shareManager); + public static SofaShareBeanFactoryPostProcessor sofaModuleBeanFactoryPostProcessor() { + return new SofaShareBeanFactoryPostProcessor(); } @Bean @ConditionalOnMissingBean @ConditionalOnClass(name = "com.alipay.sofa.isle.ApplicationRuntimeModel") @ConditionalOnProperty(value = "com.alipay.sofa.boot.enable-isle", matchIfMissing = true) - public SofaPostProcessorShareManager sofaModulePostProcessorShareManager(ApplicationContext applicationContext) { - return new SofaPostProcessorShareManager((AbstractApplicationContext) applicationContext); + public SofaPostProcessorShareManager sofaModulePostProcessorShareManager() { + return new SofaPostProcessorShareManager(); } @Bean @ConditionalOnMissingBean - public static ServiceBeanFactoryPostProcessor serviceBeanFactoryPostProcessor(SofaRuntimeContext sofaRuntimeContext, - BindingConverterFactory bindingConverterFactory) { - return new ServiceBeanFactoryPostProcessor(sofaRuntimeContext, bindingConverterFactory); + public static ServiceBeanFactoryPostProcessor serviceBeanFactoryPostProcessor() { + return new ServiceBeanFactoryPostProcessor(); } @Bean diff --git a/sofa-boot-project/sofa-boot-core/isle-sofa-boot/src/test/java/com/alipay/sofa/isle/test/FailModuleTest.java b/sofa-boot-project/sofa-boot-core/isle-sofa-boot/src/test/java/com/alipay/sofa/isle/test/FailModuleTest.java index ad5cdb241..7b9d50be5 100644 --- a/sofa-boot-project/sofa-boot-core/isle-sofa-boot/src/test/java/com/alipay/sofa/isle/test/FailModuleTest.java +++ b/sofa-boot-project/sofa-boot-core/isle-sofa-boot/src/test/java/com/alipay/sofa/isle/test/FailModuleTest.java @@ -86,8 +86,8 @@ public void test() { @EnableConfigurationProperties(SofaModuleProperties.class) public static class FailModuleTestConfiguration { @Bean - public static SofaShareBeanFactoryPostProcessor sofaModuleBeanFactoryPostProcessor(SofaPostProcessorShareManager shareManager) { - return new SofaShareBeanFactoryPostProcessor(shareManager); + public static SofaShareBeanFactoryPostProcessor sofaModuleBeanFactoryPostProcessor() { + return new SofaShareBeanFactoryPostProcessor(); } @Bean @@ -133,9 +133,8 @@ public SofaModuleProfileChecker sofaModuleProfileChecker(SofaModuleProperties so @Bean @ConditionalOnMissingBean - public SofaPostProcessorShareManager sofaModulePostProcessorShareManager(ApplicationContext applicationContext) { - return new SofaPostProcessorShareManager( - (AbstractApplicationContext) applicationContext); + public SofaPostProcessorShareManager sofaModulePostProcessorShareManager() { + return new SofaPostProcessorShareManager(); } @Bean(destroyMethod = "") diff --git a/sofa-boot-project/sofa-boot-core/isle-sofa-boot/src/test/java/com/alipay/sofa/isle/test/PostProcessorShareTest.java b/sofa-boot-project/sofa-boot-core/isle-sofa-boot/src/test/java/com/alipay/sofa/isle/test/PostProcessorShareTest.java index b9d119cec..879876d9f 100644 --- a/sofa-boot-project/sofa-boot-core/isle-sofa-boot/src/test/java/com/alipay/sofa/isle/test/PostProcessorShareTest.java +++ b/sofa-boot-project/sofa-boot-core/isle-sofa-boot/src/test/java/com/alipay/sofa/isle/test/PostProcessorShareTest.java @@ -36,9 +36,9 @@ import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.context.support.AbstractApplicationContext; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; + import java.util.Arrays; import java.util.List; import java.util.Map; @@ -72,15 +72,14 @@ static class ProcessorConfig { @Bean @ConditionalOnMissingBean - public SofaPostProcessorShareManager sofaModulePostProcessorShareManager(ApplicationContext applicationContext) { - return new SofaPostProcessorShareManager( - (AbstractApplicationContext) applicationContext); + public SofaPostProcessorShareManager sofaModulePostProcessorShareManager() { + return new SofaPostProcessorShareManager(); } @Bean @ConditionalOnMissingBean - public static SofaShareBeanFactoryPostProcessor sofaModuleBeanFactoryPostProcessor(SofaPostProcessorShareManager shareManager) { - return new SofaShareBeanFactoryPostProcessor(shareManager); + public static SofaShareBeanFactoryPostProcessor sofaModuleBeanFactoryPostProcessor() { + return new SofaShareBeanFactoryPostProcessor(); } @Bean diff --git a/sofa-boot-project/sofa-boot-core/rpc-sofa-boot/src/test/java/com/alipay/sofa/rpc/boot/test/RuntimeTestConfiguration.java b/sofa-boot-project/sofa-boot-core/rpc-sofa-boot/src/test/java/com/alipay/sofa/rpc/boot/test/RuntimeTestConfiguration.java index 875663314..2f6804206 100644 --- a/sofa-boot-project/sofa-boot-core/rpc-sofa-boot/src/test/java/com/alipay/sofa/rpc/boot/test/RuntimeTestConfiguration.java +++ b/sofa-boot-project/sofa-boot-core/rpc-sofa-boot/src/test/java/com/alipay/sofa/rpc/boot/test/RuntimeTestConfiguration.java @@ -94,17 +94,13 @@ public static SofaRuntimeContext sofaRuntimeContext(SofaRuntimeManager sofaRunti } @Bean - public static RuntimeContextBeanFactoryPostProcessor runtimeContextBeanFactoryPostProcessor(BindingAdapterFactory bindingAdapterFactory, - BindingConverterFactory bindingConverterFactory, - SofaRuntimeContext sofaRuntimeContext) { - return new RuntimeContextBeanFactoryPostProcessor(bindingAdapterFactory, - bindingConverterFactory, sofaRuntimeContext); + public static RuntimeContextBeanFactoryPostProcessor runtimeContextBeanFactoryPostProcessor() { + return new RuntimeContextBeanFactoryPostProcessor(); } @Bean - public static ServiceBeanFactoryPostProcessor serviceBeanFactoryPostProcessor(SofaRuntimeContext sofaRuntimeContext, - BindingConverterFactory bindingConverterFactory) { - return new ServiceBeanFactoryPostProcessor(sofaRuntimeContext, bindingConverterFactory); + public static ServiceBeanFactoryPostProcessor serviceBeanFactoryPostProcessor() { + return new ServiceBeanFactoryPostProcessor(); } @Bean diff --git a/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/spring/RuntimeContextBeanFactoryPostProcessor.java b/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/spring/RuntimeContextBeanFactoryPostProcessor.java index 9e7b0208e..bc96a1eb0 100644 --- a/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/spring/RuntimeContextBeanFactoryPostProcessor.java +++ b/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/spring/RuntimeContextBeanFactoryPostProcessor.java @@ -43,6 +43,10 @@ public class RuntimeContextBeanFactoryPostProcessor implements BeanFactoryPostPr private SofaRuntimeContext sofaRuntimeContext; private ApplicationContext applicationContext; + public RuntimeContextBeanFactoryPostProcessor() { + } + + @Deprecated public RuntimeContextBeanFactoryPostProcessor(BindingAdapterFactory bindingAdapterFactory, BindingConverterFactory bindingConverterFactory, SofaRuntimeContext sofaRuntimeContext) { @@ -77,5 +81,11 @@ public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.applicationContext = applicationContext; + this.bindingAdapterFactory = applicationContext.getBean("bindingAdapterFactory", + BindingAdapterFactory.class); + this.bindingConverterFactory = applicationContext.getBean("bindingConverterFactory", + BindingConverterFactory.class); + this.sofaRuntimeContext = applicationContext.getBean("sofaRuntimeContext", + SofaRuntimeContext.class); } } diff --git a/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/spring/ServiceBeanFactoryPostProcessor.java b/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/spring/ServiceBeanFactoryPostProcessor.java index 40d3113d2..6a1400faf 100644 --- a/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/spring/ServiceBeanFactoryPostProcessor.java +++ b/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/spring/ServiceBeanFactoryPostProcessor.java @@ -88,6 +88,10 @@ public class ServiceBeanFactoryPostProcessor implements BeanDefinitionRegistryPo private BindingConverterFactory bindingConverterFactory; private Environment environment; + public ServiceBeanFactoryPostProcessor() { + } + + @Deprecated public ServiceBeanFactoryPostProcessor(SofaRuntimeContext sofaRuntimeContext, BindingConverterFactory bindingConverterFactory) { this.sofaRuntimeContext = sofaRuntimeContext; @@ -382,6 +386,10 @@ private List getSofaReferenceBinding(SofaReference sofaReferenceAnnotat @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.applicationContext = applicationContext; + this.sofaRuntimeContext = applicationContext.getBean("sofaRuntimeContext", + SofaRuntimeContext.class); + this.bindingConverterFactory = applicationContext.getBean("bindingConverterFactory", + BindingConverterFactory.class); } @Override diff --git a/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/spring/SofaShareBeanFactoryPostProcessor.java b/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/spring/SofaShareBeanFactoryPostProcessor.java index 806b23f1e..491b2a1c8 100644 --- a/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/spring/SofaShareBeanFactoryPostProcessor.java +++ b/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/spring/SofaShareBeanFactoryPostProcessor.java @@ -23,6 +23,8 @@ import org.springframework.beans.factory.config.BeanFactoryPostProcessor; import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; import org.springframework.context.EnvironmentAware; import org.springframework.context.annotation.ConfigurationClassPostProcessor; import org.springframework.core.annotation.Order; @@ -43,7 +45,7 @@ */ @Order public class SofaShareBeanFactoryPostProcessor implements BeanFactoryPostProcessor, - EnvironmentAware { + EnvironmentAware, ApplicationContextAware { /** spring will add automatically **/ private final String[] whiteNameList = new String[] { ConfigurationClassPostProcessor.class.getName() + ".importAwareProcessor", @@ -54,6 +56,10 @@ public class SofaShareBeanFactoryPostProcessor implements BeanFactoryPostProcess private Boolean isShareParentContextPostProcessors; + public SofaShareBeanFactoryPostProcessor() { + } + + @Deprecated public SofaShareBeanFactoryPostProcessor(SofaPostProcessorShareManager shareManager) { this.sofaPostProcessorShareManager = shareManager; } @@ -80,7 +86,7 @@ private Map getBeanDefinitionsForType(ConfigurableListab Set allBeanDefinitionNames = new HashSet<>(Arrays.asList(beanFactory .getBeanDefinitionNames())); - String[] beanNamesForType = beanFactory.getBeanNamesForType(type); + String[] beanNamesForType = beanFactory.getBeanNamesForType(type, true, false); for (String beanName : beanNamesForType) { if (notInWhiteNameList(beanName) && allBeanDefinitionNames.contains(beanName)) { @@ -112,4 +118,10 @@ public void setEnvironment(Environment environment) { SofaBootConstants.SOFABOOT_SHARE_PARENT_CONTEXT_POST_PROCESSOR_ENABLED, Boolean.class, SofaBootConstants.SOFABOOT_SHARE_PARENT_CONTEXT_POST_PROCESSOR_DEFAULT_ENABLED); } + + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + this.sofaPostProcessorShareManager = applicationContext.getBean( + "sofaModulePostProcessorShareManager", SofaPostProcessorShareManager.class); + } } diff --git a/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/spring/share/SofaPostProcessorShareManager.java b/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/spring/share/SofaPostProcessorShareManager.java index 2be452f37..2767bb844 100644 --- a/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/spring/share/SofaPostProcessorShareManager.java +++ b/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/spring/share/SofaPostProcessorShareManager.java @@ -16,6 +16,10 @@ */ package com.alipay.sofa.runtime.spring.share; +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; import org.springframework.context.support.AbstractApplicationContext; import java.util.List; @@ -25,17 +29,26 @@ /** * Created by TomorJM on 2019-10-09. */ -public class SofaPostProcessorShareManager { +public class SofaPostProcessorShareManager implements ApplicationContextAware, InitializingBean { private AbstractApplicationContext context; - private static List filterClassList = new CopyOnWriteArrayList<>(); + private List filterClassList = new CopyOnWriteArrayList<>(); - private static List filterBeanNameList = new CopyOnWriteArrayList<>(); + private List filterBeanNameList = new CopyOnWriteArrayList<>(); + public SofaPostProcessorShareManager() { + } + + @Deprecated public SofaPostProcessorShareManager(AbstractApplicationContext applicationContext) { this.context = applicationContext; - Map map = context.getBeansOfType(SofaPostProcessorShareFilter.class); + } + + @Override + public void afterPropertiesSet() throws Exception { + Map map = context.getBeansOfType(SofaPostProcessorShareFilter.class, + true, false); map.forEach((k, v) -> { this.filterClassList.addAll(v.filterBeanFactoryPostProcessorClass()); this.filterClassList.addAll(v.filterBeanPostProcessorClass()); @@ -53,4 +66,8 @@ public boolean unableToShare(String beanName) { return this.filterBeanNameList.contains(beanName); } + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + this.context = (AbstractApplicationContext) applicationContext; + } } diff --git a/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/test/java/com/alipay/sofa/runtime/test/configuration/RuntimeConfiguration.java b/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/test/java/com/alipay/sofa/runtime/test/configuration/RuntimeConfiguration.java index 848b4de1a..d57affb21 100644 --- a/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/test/java/com/alipay/sofa/runtime/test/configuration/RuntimeConfiguration.java +++ b/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/test/java/com/alipay/sofa/runtime/test/configuration/RuntimeConfiguration.java @@ -102,17 +102,13 @@ public static SofaRuntimeContext sofaRuntimeContext(SofaRuntimeManager sofaRunti } @Bean - public static RuntimeContextBeanFactoryPostProcessor runtimeContextBeanFactoryPostProcessor(BindingAdapterFactory bindingAdapterFactory, - BindingConverterFactory bindingConverterFactory, - SofaRuntimeContext sofaRuntimeContext) { - return new RuntimeContextBeanFactoryPostProcessor(bindingAdapterFactory, - bindingConverterFactory, sofaRuntimeContext); + public static RuntimeContextBeanFactoryPostProcessor runtimeContextBeanFactoryPostProcessor() { + return new RuntimeContextBeanFactoryPostProcessor(); } @Bean - public static ServiceBeanFactoryPostProcessor serviceBeanFactoryPostProcessor(SofaRuntimeContext sofaRuntimeContext, - BindingConverterFactory bindingConverterFactory) { - return new ServiceBeanFactoryPostProcessor(sofaRuntimeContext, bindingConverterFactory); + public static ServiceBeanFactoryPostProcessor serviceBeanFactoryPostProcessor() { + return new ServiceBeanFactoryPostProcessor(); } public static Set getClassesByServiceLoader(Class clazz) { diff --git a/sofa-boot-project/sofa-boot-core/startup-sofa-boot/src/test/java/com/alipay/sofa/startup/test/configuration/SofaStartupIsleAutoConfiguration.java b/sofa-boot-project/sofa-boot-core/startup-sofa-boot/src/test/java/com/alipay/sofa/startup/test/configuration/SofaStartupIsleAutoConfiguration.java index 14f3288fb..1e76efb2a 100644 --- a/sofa-boot-project/sofa-boot-core/startup-sofa-boot/src/test/java/com/alipay/sofa/startup/test/configuration/SofaStartupIsleAutoConfiguration.java +++ b/sofa-boot-project/sofa-boot-core/startup-sofa-boot/src/test/java/com/alipay/sofa/startup/test/configuration/SofaStartupIsleAutoConfiguration.java @@ -19,16 +19,21 @@ import com.alipay.sofa.isle.ApplicationRuntimeModel; import com.alipay.sofa.isle.profile.DefaultSofaModuleProfileChecker; import com.alipay.sofa.isle.profile.SofaModuleProfileChecker; -import com.alipay.sofa.isle.spring.config.SofaModuleProperties; -import com.alipay.sofa.runtime.spring.SofaShareBeanFactoryPostProcessor; import com.alipay.sofa.isle.spring.SofaModuleContextLifecycle; -import com.alipay.sofa.runtime.spring.share.SofaPostProcessorShareManager; -import com.alipay.sofa.isle.stage.*; +import com.alipay.sofa.isle.spring.config.SofaModuleProperties; +import com.alipay.sofa.isle.stage.DefaultPipelineContext; +import com.alipay.sofa.isle.stage.ModelCreatingStage; +import com.alipay.sofa.isle.stage.ModuleLogOutputStage; +import com.alipay.sofa.isle.stage.PipelineContext; +import com.alipay.sofa.isle.stage.PipelineStage; +import com.alipay.sofa.isle.stage.SpringContextInstallStage; import com.alipay.sofa.runtime.SofaFramework; import com.alipay.sofa.runtime.client.impl.ClientFactoryImpl; import com.alipay.sofa.runtime.component.impl.StandardSofaRuntimeManager; import com.alipay.sofa.runtime.spi.client.ClientFactoryInternal; import com.alipay.sofa.runtime.spi.component.SofaRuntimeManager; +import com.alipay.sofa.runtime.spring.SofaShareBeanFactoryPostProcessor; +import com.alipay.sofa.runtime.spring.share.SofaPostProcessorShareManager; import com.alipay.sofa.startup.StartupReporter; import com.alipay.sofa.startup.stage.isle.StartupModelCreatingStage; import com.alipay.sofa.startup.stage.isle.StartupSpringContextInstallStage; @@ -98,14 +103,14 @@ public SofaModuleProfileChecker sofaModuleProfileChecker(SofaModuleProperties so @Bean @ConditionalOnMissingBean - public SofaPostProcessorShareManager sofaModulePostProcessorShareManager(ApplicationContext applicationContext) { - return new SofaPostProcessorShareManager((AbstractApplicationContext) applicationContext); + public SofaPostProcessorShareManager sofaModulePostProcessorShareManager() { + return new SofaPostProcessorShareManager(); } @Bean @ConditionalOnMissingBean - public static SofaShareBeanFactoryPostProcessor sofaModuleBeanFactoryPostProcessor(SofaPostProcessorShareManager shareManager) { - return new SofaShareBeanFactoryPostProcessor(shareManager); + public static SofaShareBeanFactoryPostProcessor sofaModuleBeanFactoryPostProcessor() { + return new SofaShareBeanFactoryPostProcessor(); } @Bean(destroyMethod = "") diff --git a/sofa-boot-project/sofa-boot-core/startup-sofa-boot/src/test/java/com/alipay/sofa/startup/test/spring/RuntimeConfiguration.java b/sofa-boot-project/sofa-boot-core/startup-sofa-boot/src/test/java/com/alipay/sofa/startup/test/spring/RuntimeConfiguration.java index 31eaef8e2..cca35f8b5 100644 --- a/sofa-boot-project/sofa-boot-core/startup-sofa-boot/src/test/java/com/alipay/sofa/startup/test/spring/RuntimeConfiguration.java +++ b/sofa-boot-project/sofa-boot-core/startup-sofa-boot/src/test/java/com/alipay/sofa/startup/test/spring/RuntimeConfiguration.java @@ -94,17 +94,13 @@ public static SofaRuntimeContext sofaRuntimeContext(SofaRuntimeManager sofaRunti } @Bean - public static RuntimeContextBeanFactoryPostProcessor runtimeContextBeanFactoryPostProcessor(BindingAdapterFactory bindingAdapterFactory, - BindingConverterFactory bindingConverterFactory, - SofaRuntimeContext sofaRuntimeContext) { - return new RuntimeContextBeanFactoryPostProcessor(bindingAdapterFactory, - bindingConverterFactory, sofaRuntimeContext); + public static RuntimeContextBeanFactoryPostProcessor runtimeContextBeanFactoryPostProcessor() { + return new RuntimeContextBeanFactoryPostProcessor(); } @Bean - public static ServiceBeanFactoryPostProcessor serviceBeanFactoryPostProcessor(SofaRuntimeContext sofaRuntimeContext, - BindingConverterFactory bindingConverterFactory) { - return new ServiceBeanFactoryPostProcessor(sofaRuntimeContext, bindingConverterFactory); + public static ServiceBeanFactoryPostProcessor serviceBeanFactoryPostProcessor() { + return new ServiceBeanFactoryPostProcessor(); } public static Set getClassesByServiceLoader(Class clazz) { From 5ff83dbada07dac8bc5fc1b4f4daab1a85f8cfd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=87=B4=E8=8A=82?= Date: Tue, 25 Oct 2022 12:25:42 +0800 Subject: [PATCH 2/4] support singleton bpp --- .../loader/DynamicSpringContextLoader.java | 13 +- .../isle/test/SingletonProcessorTest.java | 163 ++++++++++++++++++ .../processor/SingletonBeanPostProcessor.java | 28 +++ .../proxy/ProxyBeanFactoryPostProcessor.java | 2 + .../spring/JvmFilterPostProcessor.java | 2 + .../SofaShareBeanFactoryPostProcessor.java | 2 + .../singleton/SingletonSofaPostProcessor.java | 34 ++++ 7 files changed, 243 insertions(+), 1 deletion(-) create mode 100644 sofa-boot-project/sofa-boot-core/isle-sofa-boot/src/test/java/com/alipay/sofa/isle/test/SingletonProcessorTest.java create mode 100644 sofa-boot-project/sofa-boot-core/isle-sofa-boot/src/test/java/com/alipay/sofa/isle/test/processor/SingletonBeanPostProcessor.java create mode 100644 sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/spring/singleton/SingletonSofaPostProcessor.java diff --git a/sofa-boot-project/sofa-boot-core/isle-sofa-boot/src/main/java/com/alipay/sofa/isle/loader/DynamicSpringContextLoader.java b/sofa-boot-project/sofa-boot-core/isle-sofa-boot/src/main/java/com/alipay/sofa/isle/loader/DynamicSpringContextLoader.java index 7efa82642..73f3cecc0 100644 --- a/sofa-boot-project/sofa-boot-core/isle-sofa-boot/src/main/java/com/alipay/sofa/isle/loader/DynamicSpringContextLoader.java +++ b/sofa-boot-project/sofa-boot-core/isle-sofa-boot/src/main/java/com/alipay/sofa/isle/loader/DynamicSpringContextLoader.java @@ -24,6 +24,7 @@ import com.alipay.sofa.runtime.context.SofaApplicationContext; import com.alipay.sofa.runtime.factory.BeanLoadCostBeanFactory; import com.alipay.sofa.runtime.log.SofaLogger; +import com.alipay.sofa.runtime.spring.singleton.SingletonSofaPostProcessor; import com.alipay.sofa.runtime.util.SofaSpringContextUtil; import org.springframework.beans.CachedIntrospectionResults; import org.springframework.beans.factory.config.BeanDefinition; @@ -33,6 +34,7 @@ import org.springframework.context.ApplicationContext; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.support.GenericApplicationContext; +import org.springframework.core.annotation.AnnotationUtils; import org.springframework.core.io.Resource; import org.springframework.util.StringUtils; @@ -150,7 +152,16 @@ protected void addPostProcessors(DefaultListableBeanFactory beanFactory) { .getBean(SofaBootConstants.PROCESSORS_OF_ROOT_APPLICATION_CONTEXT); for (Map.Entry entry : processors.entrySet()) { if (!beanFactory.containsBeanDefinition(entry.getKey())) { - beanFactory.registerBeanDefinition(entry.getKey(), entry.getValue()); + Class type = rootApplicationContext.getType(entry.getKey()); + if (type != null + && AnnotationUtils.findAnnotation(type, SingletonSofaPostProcessor.class) != null) { + // 复用单例 + beanFactory.registerSingleton(entry.getKey(), + rootApplicationContext.getBean(entry.getKey())); + } else { + // 注册 BeanDefinition + beanFactory.registerBeanDefinition(entry.getKey(), entry.getValue()); + } } } } diff --git a/sofa-boot-project/sofa-boot-core/isle-sofa-boot/src/test/java/com/alipay/sofa/isle/test/SingletonProcessorTest.java b/sofa-boot-project/sofa-boot-core/isle-sofa-boot/src/test/java/com/alipay/sofa/isle/test/SingletonProcessorTest.java new file mode 100644 index 000000000..964bb30e3 --- /dev/null +++ b/sofa-boot-project/sofa-boot-core/isle-sofa-boot/src/test/java/com/alipay/sofa/isle/test/SingletonProcessorTest.java @@ -0,0 +1,163 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alipay.sofa.isle.test; + +import com.alipay.sofa.isle.profile.DefaultSofaModuleProfileChecker; +import com.alipay.sofa.isle.profile.SofaModuleProfileChecker; +import com.alipay.sofa.isle.spring.SofaModuleContextLifecycle; +import com.alipay.sofa.isle.spring.config.SofaModuleProperties; +import com.alipay.sofa.isle.stage.DefaultPipelineContext; +import com.alipay.sofa.isle.stage.ModelCreatingStage; +import com.alipay.sofa.isle.stage.ModuleLogOutputStage; +import com.alipay.sofa.isle.stage.PipelineContext; +import com.alipay.sofa.isle.stage.PipelineStage; +import com.alipay.sofa.isle.stage.SpringContextInstallStage; +import com.alipay.sofa.isle.test.processor.SampleBeanPostProcessor; +import com.alipay.sofa.isle.test.processor.SingletonBeanPostProcessor; +import com.alipay.sofa.isle.test.util.AddCustomJar; +import com.alipay.sofa.isle.test.util.SeparateClassLoaderTestRunner; +import com.alipay.sofa.runtime.SofaFramework; +import com.alipay.sofa.runtime.client.impl.ClientFactoryImpl; +import com.alipay.sofa.runtime.component.impl.StandardSofaRuntimeManager; +import com.alipay.sofa.runtime.spi.client.ClientFactoryInternal; +import com.alipay.sofa.runtime.spi.component.ComponentInfo; +import com.alipay.sofa.runtime.spi.component.SofaRuntimeManager; +import com.alipay.sofa.runtime.spring.SofaShareBeanFactoryPostProcessor; +import com.alipay.sofa.runtime.spring.SpringContextComponent; +import com.alipay.sofa.runtime.spring.share.SofaPostProcessorShareManager; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.support.AbstractApplicationContext; + +import java.util.Collection; +import java.util.List; + +/** + * @author huzijie + * @version SingletonProcessorTest.java, v 0.1 2022年10月25日 11:33 AM huzijie Exp $ + */ +@RunWith(SeparateClassLoaderTestRunner.class) +@SpringBootTest +@AddCustomJar({ "dev-module-0.1.0.jar" }) +public class SingletonProcessorTest { + + @Autowired + private SingletonBeanPostProcessor singletonBeanPostProcessor; + + @Autowired + private SampleBeanPostProcessor sampleBeanPostProcessor; + + @Autowired + private SofaRuntimeManager sofaRuntimeManager; + + @Test + public void testSingletonBpp() { + Collection components = + sofaRuntimeManager.getComponentManager().getComponentInfosByType(SpringContextComponent.SPRING_COMPONENT_TYPE); + ApplicationContext applicationContext = components.stream().filter(componentInfo -> componentInfo.getName().getRawName().contains("dev")).findFirst().get().getApplicationContext(); + SingletonBeanPostProcessor singletonBeanPostProcessor = applicationContext.getBean(SingletonBeanPostProcessor.class); + SampleBeanPostProcessor sampleBeanPostProcessor = applicationContext.getBean(SampleBeanPostProcessor.class); + Assert.assertEquals(singletonBeanPostProcessor, this.singletonBeanPostProcessor); + Assert.assertNotEquals(sampleBeanPostProcessor, this.sampleBeanPostProcessor); + } + + @Configuration(proxyBeanMethods = false) + @EnableConfigurationProperties(SofaModuleProperties.class) + public static class SofaModuleProfileCheckerTestConfiguration { + + @Bean + public static SofaShareBeanFactoryPostProcessor sofaModuleBeanFactoryPostProcessor() { + return new SofaShareBeanFactoryPostProcessor(); + } + + @Bean + @ConditionalOnMissingBean + public SofaModuleContextLifecycle sofaModuleContextLifecycle(PipelineContext pipelineContext) { + return new SofaModuleContextLifecycle(pipelineContext); + } + + @Bean + @ConditionalOnMissingBean + public ModelCreatingStage modelCreatingStage(ApplicationContext applicationContext, + SofaModuleProperties sofaModuleProperties, + SofaModuleProfileChecker sofaModuleProfileChecker) { + return new ModelCreatingStage((AbstractApplicationContext) applicationContext, + sofaModuleProperties, sofaModuleProfileChecker); + } + + @Bean + @ConditionalOnMissingBean + public SpringContextInstallStage springContextInstallStage(ApplicationContext applicationContext, + SofaModuleProperties sofaModuleProperties) { + return new SpringContextInstallStage((AbstractApplicationContext) applicationContext, + sofaModuleProperties); + } + + @Bean + @ConditionalOnMissingBean + public ModuleLogOutputStage moduleLogOutputStage(ApplicationContext applicationContext) { + return new ModuleLogOutputStage((AbstractApplicationContext) applicationContext); + } + + @Bean + @ConditionalOnMissingBean + public PipelineContext pipelineContext(List stageList) { + return new DefaultPipelineContext(stageList); + } + + @Bean + @ConditionalOnMissingBean + public SofaModuleProfileChecker sofaModuleProfileChecker(SofaModuleProperties sofaModuleProperties) { + return new DefaultSofaModuleProfileChecker(sofaModuleProperties); + } + + @Bean + @ConditionalOnMissingBean + public SofaPostProcessorShareManager sofaModulePostProcessorShareManager() { + return new SofaPostProcessorShareManager(); + } + + @Bean(destroyMethod = "") + @ConditionalOnMissingBean + public static SofaRuntimeManager sofaRuntimeManager() { + ClientFactoryInternal clientFactoryInternal = new ClientFactoryImpl(); + SofaRuntimeManager sofaRuntimeManager = new StandardSofaRuntimeManager( + "FailModuleTest", Thread.currentThread().getContextClassLoader(), + clientFactoryInternal); + SofaFramework.registerSofaRuntimeManager(sofaRuntimeManager); + return sofaRuntimeManager; + } + + @Bean + public SingletonBeanPostProcessor singletonBeanPostProcessor() { + return new SingletonBeanPostProcessor(); + } + + @Bean + public SampleBeanPostProcessor sampleBeanPostProcessor() { + return new SampleBeanPostProcessor(); + } + } +} \ No newline at end of file diff --git a/sofa-boot-project/sofa-boot-core/isle-sofa-boot/src/test/java/com/alipay/sofa/isle/test/processor/SingletonBeanPostProcessor.java b/sofa-boot-project/sofa-boot-core/isle-sofa-boot/src/test/java/com/alipay/sofa/isle/test/processor/SingletonBeanPostProcessor.java new file mode 100644 index 000000000..c5589ef45 --- /dev/null +++ b/sofa-boot-project/sofa-boot-core/isle-sofa-boot/src/test/java/com/alipay/sofa/isle/test/processor/SingletonBeanPostProcessor.java @@ -0,0 +1,28 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alipay.sofa.isle.test.processor; + +import com.alipay.sofa.runtime.spring.singleton.SingletonSofaPostProcessor; +import org.springframework.beans.factory.config.BeanPostProcessor; + +/** + * @author huzijie + * @version SingletonBeanPostProcessor.java, v 0.1 2022年10月25日 11:33 AM huzijie Exp $ + */ +@SingletonSofaPostProcessor +public class SingletonBeanPostProcessor implements BeanPostProcessor { +} \ No newline at end of file diff --git a/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/proxy/ProxyBeanFactoryPostProcessor.java b/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/proxy/ProxyBeanFactoryPostProcessor.java index c8622104e..2bc2ddbd3 100644 --- a/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/proxy/ProxyBeanFactoryPostProcessor.java +++ b/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/proxy/ProxyBeanFactoryPostProcessor.java @@ -16,6 +16,7 @@ */ package com.alipay.sofa.runtime.proxy; +import com.alipay.sofa.runtime.spring.singleton.SingletonSofaPostProcessor; import org.springframework.aop.framework.ProxyFactoryBean; import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanFactoryUtils; @@ -32,6 +33,7 @@ * @author ruoshan * @since 3.12.0 */ +@SingletonSofaPostProcessor public class ProxyBeanFactoryPostProcessor implements BeanDefinitionRegistryPostProcessor, PriorityOrdered { diff --git a/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/spring/JvmFilterPostProcessor.java b/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/spring/JvmFilterPostProcessor.java index 3215bde39..d87c4d025 100644 --- a/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/spring/JvmFilterPostProcessor.java +++ b/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/spring/JvmFilterPostProcessor.java @@ -19,6 +19,7 @@ import com.alipay.sofa.runtime.SofaRuntimeUtils; import com.alipay.sofa.runtime.filter.JvmFilterHolder; import com.alipay.sofa.runtime.filter.JvmFilter; +import com.alipay.sofa.runtime.spring.singleton.SingletonSofaPostProcessor; import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.core.PriorityOrdered; @@ -27,6 +28,7 @@ * @author Alaneuler * Created on 2020/8/18 */ +@SingletonSofaPostProcessor public class JvmFilterPostProcessor implements BeanPostProcessor, PriorityOrdered { @Override public Object postProcessAfterInitialization(Object bean, String beanName) diff --git a/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/spring/SofaShareBeanFactoryPostProcessor.java b/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/spring/SofaShareBeanFactoryPostProcessor.java index 491b2a1c8..cd72b2fac 100644 --- a/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/spring/SofaShareBeanFactoryPostProcessor.java +++ b/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/spring/SofaShareBeanFactoryPostProcessor.java @@ -18,6 +18,7 @@ import com.alipay.sofa.boot.util.BeanDefinitionUtil; import com.alipay.sofa.runtime.spring.share.SofaPostProcessorShareManager; +import com.alipay.sofa.runtime.spring.singleton.SingletonSofaPostProcessor; import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.config.BeanFactoryPostProcessor; @@ -44,6 +45,7 @@ * @author xuanbei 18/3/26 */ @Order +@SingletonSofaPostProcessor public class SofaShareBeanFactoryPostProcessor implements BeanFactoryPostProcessor, EnvironmentAware, ApplicationContextAware { /** spring will add automatically **/ diff --git a/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/spring/singleton/SingletonSofaPostProcessor.java b/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/spring/singleton/SingletonSofaPostProcessor.java new file mode 100644 index 000000000..f837abf04 --- /dev/null +++ b/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/spring/singleton/SingletonSofaPostProcessor.java @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alipay.sofa.runtime.spring.singleton; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Use this annotation to tag BeanFactoryPostProcessor/BeanPostProcessor, which will share singleton in modules. + * @author huzijie + * @version SingletonSofaPostProcessor.java, v 0.1 2022年10月24日 4:24 PM huzijie Exp $ + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ ElementType.TYPE }) +@Inherited +public @interface SingletonSofaPostProcessor { +} From 75243d1a24c0f1d12ca2624b313fc68c91cf23be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=87=B4=E8=8A=82?= Date: Tue, 25 Oct 2022 12:30:21 +0800 Subject: [PATCH 3/4] make SofaShareBeanFactoryPostProcessor unshared --- .../sofa/runtime/spring/SofaShareBeanFactoryPostProcessor.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/spring/SofaShareBeanFactoryPostProcessor.java b/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/spring/SofaShareBeanFactoryPostProcessor.java index cd72b2fac..45c89419f 100644 --- a/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/spring/SofaShareBeanFactoryPostProcessor.java +++ b/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/spring/SofaShareBeanFactoryPostProcessor.java @@ -18,6 +18,7 @@ import com.alipay.sofa.boot.util.BeanDefinitionUtil; import com.alipay.sofa.runtime.spring.share.SofaPostProcessorShareManager; +import com.alipay.sofa.runtime.spring.share.UnshareSofaPostProcessor; import com.alipay.sofa.runtime.spring.singleton.SingletonSofaPostProcessor; import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanDefinition; @@ -45,7 +46,7 @@ * @author xuanbei 18/3/26 */ @Order -@SingletonSofaPostProcessor +@UnshareSofaPostProcessor public class SofaShareBeanFactoryPostProcessor implements BeanFactoryPostProcessor, EnvironmentAware, ApplicationContextAware { /** spring will add automatically **/ From 8eceb1538d8c42805dd8f7fa99c236f821f82351 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=87=B4=E8=8A=82?= Date: Tue, 25 Oct 2022 19:59:59 +0800 Subject: [PATCH 4/4] fix_pmd --- .../runtime/spring/SofaShareBeanFactoryPostProcessor.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/spring/SofaShareBeanFactoryPostProcessor.java b/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/spring/SofaShareBeanFactoryPostProcessor.java index 45c89419f..6cbabc2b8 100644 --- a/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/spring/SofaShareBeanFactoryPostProcessor.java +++ b/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/spring/SofaShareBeanFactoryPostProcessor.java @@ -16,10 +16,10 @@ */ package com.alipay.sofa.runtime.spring; +import com.alipay.sofa.boot.constant.SofaBootConstants; import com.alipay.sofa.boot.util.BeanDefinitionUtil; import com.alipay.sofa.runtime.spring.share.SofaPostProcessorShareManager; import com.alipay.sofa.runtime.spring.share.UnshareSofaPostProcessor; -import com.alipay.sofa.runtime.spring.singleton.SingletonSofaPostProcessor; import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.config.BeanFactoryPostProcessor; @@ -30,8 +30,6 @@ import org.springframework.context.EnvironmentAware; import org.springframework.context.annotation.ConfigurationClassPostProcessor; import org.springframework.core.annotation.Order; - -import com.alipay.sofa.boot.constant.SofaBootConstants; import org.springframework.core.env.Environment; import java.util.Arrays;