4040import com .alipay .sofa .runtime .spring .parser .ServiceDefinitionParser ;
4141import org .springframework .beans .BeansException ;
4242import org .springframework .beans .FatalBeanException ;
43+ import org .springframework .beans .factory .InitializingBean ;
4344import org .springframework .beans .factory .annotation .AnnotatedBeanDefinition ;
4445import org .springframework .beans .factory .annotation .AnnotatedGenericBeanDefinition ;
4546import org .springframework .beans .factory .config .BeanDefinition ;
47+ import org .springframework .beans .factory .config .BeanFactoryPostProcessor ;
4648import org .springframework .beans .factory .config .ConfigurableListableBeanFactory ;
4749import org .springframework .beans .factory .support .BeanDefinitionBuilder ;
4850import org .springframework .beans .factory .support .BeanDefinitionRegistry ;
49- import org .springframework .beans .factory .support .BeanDefinitionRegistryPostProcessor ;
5051import org .springframework .beans .factory .support .GenericBeanDefinition ;
5152import org .springframework .context .ApplicationContext ;
5253import org .springframework .context .ApplicationContextAware ;
5657import org .springframework .core .Ordered ;
5758import org .springframework .core .annotation .AnnotatedElementUtils ;
5859import org .springframework .core .annotation .AnnotationUtils ;
59- import org .springframework .core .annotation .Order ;
6060import org .springframework .core .env .Environment ;
6161import org .springframework .core .type .MethodMetadata ;
6262import org .springframework .core .type .StandardMethodMetadata ;
7979 * @author qilong.zql
8080 * @since 3.1.0
8181 */
82- @ Order ( Ordered . HIGHEST_PRECEDENCE + 10 )
83- public class ServiceBeanFactoryPostProcessor implements BeanDefinitionRegistryPostProcessor ,
84- ApplicationContextAware , EnvironmentAware {
82+ public class ServiceBeanFactoryPostProcessor implements BeanFactoryPostProcessor ,
83+ ApplicationContextAware , EnvironmentAware ,
84+ InitializingBean , Ordered {
8585 private final PlaceHolderBinder binder = new DefaultPlaceHolderBinder ();
8686 private ApplicationContext applicationContext ;
8787 private SofaRuntimeContext sofaRuntimeContext ;
@@ -98,16 +98,12 @@ public ServiceBeanFactoryPostProcessor(SofaRuntimeContext sofaRuntimeContext,
9898 this .bindingConverterFactory = bindingConverterFactory ;
9999 }
100100
101- @ Override
102- public void postProcessBeanDefinitionRegistry (BeanDefinitionRegistry registry ) throws BeansException {
103- Arrays .stream (registry .getBeanDefinitionNames ())
104- .collect (Collectors .toMap (Function .identity (), registry ::getBeanDefinition ))
105- .forEach ((key , value ) -> transformSofaBeanDefinition (key , value , registry ));
106- }
107-
108101 @ Override
109102 public void postProcessBeanFactory (ConfigurableListableBeanFactory beanFactory )
110103 throws BeansException {
104+ Arrays .stream (beanFactory .getBeanDefinitionNames ())
105+ .collect (Collectors .toMap (Function .identity (), beanFactory ::getBeanDefinition ))
106+ .forEach ((key , value ) -> transformSofaBeanDefinition (key , value , (BeanDefinitionRegistry ) beanFactory ));
111107 }
112108
113109 /**
@@ -386,17 +382,26 @@ private List<Binding> getSofaReferenceBinding(SofaReference sofaReferenceAnnotat
386382 @ Override
387383 public void setApplicationContext (ApplicationContext applicationContext ) throws BeansException {
388384 this .applicationContext = applicationContext ;
389- this .sofaRuntimeContext = applicationContext .getBean ("sofaRuntimeContext" ,
390- SofaRuntimeContext .class );
391- this .bindingConverterFactory = applicationContext .getBean ("bindingConverterFactory" ,
392- BindingConverterFactory .class );
393385 }
394386
395387 @ Override
396388 public void setEnvironment (Environment environment ) {
397389 this .environment = environment ;
398390 }
399391
392+ @ Override
393+ public int getOrder () {
394+ return Ordered .HIGHEST_PRECEDENCE + 10 ;
395+ }
396+
397+ @ Override
398+ public void afterPropertiesSet () throws Exception {
399+ this .sofaRuntimeContext = applicationContext .getBean ("sofaRuntimeContext" ,
400+ SofaRuntimeContext .class );
401+ this .bindingConverterFactory = applicationContext .getBean ("bindingConverterFactory" ,
402+ BindingConverterFactory .class );
403+ }
404+
400405 class DefaultPlaceHolderBinder implements PlaceHolderBinder {
401406 @ Override
402407 public String bind (String text ) {
0 commit comments