diff --git a/spring-cloud-context/src/main/java/org/springframework/cloud/autoconfigure/RefreshAutoConfiguration.java b/spring-cloud-context/src/main/java/org/springframework/cloud/autoconfigure/RefreshAutoConfiguration.java index 191781d1..d1712125 100644 --- a/spring-cloud-context/src/main/java/org/springframework/cloud/autoconfigure/RefreshAutoConfiguration.java +++ b/spring-cloud-context/src/main/java/org/springframework/cloud/autoconfigure/RefreshAutoConfiguration.java @@ -136,14 +136,6 @@ public class RefreshAutoConfiguration { @Override public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException { - // temporarily allow bean definition overriding - boolean allowBeanOverriding = false; - if (registry instanceof DefaultListableBeanFactory) { - DefaultListableBeanFactory beanFactory = (DefaultListableBeanFactory) registry; - allowBeanOverriding = beanFactory.isAllowBeanDefinitionOverriding(); - beanFactory.setAllowBeanDefinitionOverriding(true); - } - bindEnvironmentIfNeeded(registry); for (String name : registry.getBeanDefinitionNames()) { @@ -154,15 +146,13 @@ public class RefreshAutoConfiguration { BeanDefinitionHolder proxy = ScopedProxyUtils .createScopedProxy(holder, registry, true); definition.setScope("refresh"); + if (registry.containsBeanDefinition(proxy.getBeanName())) { + registry.removeBeanDefinition(proxy.getBeanName()); + } registry.registerBeanDefinition(proxy.getBeanName(), proxy.getBeanDefinition()); } } - // restore bean definition overriding - if (registry instanceof DefaultListableBeanFactory) { - DefaultListableBeanFactory beanFactory = (DefaultListableBeanFactory) registry; - beanFactory.setAllowBeanDefinitionOverriding(allowBeanOverriding); - } } private boolean isApplicable(BeanDefinitionRegistry registry, String name,