Removes previous bean definitions rather than calling setAllowBeanDefinitionOverriding

See gh-395
This commit is contained in:
Spencer Gibb
2018-10-05 14:31:39 -04:00
parent 1c03cbc067
commit b86b637f47

View File

@@ -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,