registerDependentBean resolves to the canonical bean name in order to handle alias references (SPR-7254)
This commit is contained in:
parent
d684e49462
commit
de866a0ff6
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2008 the original author or authors.
|
* Copyright 2002-2010 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -363,11 +363,12 @@ public class DefaultSingletonBeanRegistry extends SimpleAliasRegistry implements
|
||||||
* @param dependentBeanName the name of the dependent bean
|
* @param dependentBeanName the name of the dependent bean
|
||||||
*/
|
*/
|
||||||
public void registerDependentBean(String beanName, String dependentBeanName) {
|
public void registerDependentBean(String beanName, String dependentBeanName) {
|
||||||
|
String canonicalName = canonicalName(beanName);
|
||||||
synchronized (this.dependentBeanMap) {
|
synchronized (this.dependentBeanMap) {
|
||||||
Set<String> dependentBeans = this.dependentBeanMap.get(beanName);
|
Set<String> dependentBeans = this.dependentBeanMap.get(canonicalName);
|
||||||
if (dependentBeans == null) {
|
if (dependentBeans == null) {
|
||||||
dependentBeans = new LinkedHashSet<String>(8);
|
dependentBeans = new LinkedHashSet<String>(8);
|
||||||
this.dependentBeanMap.put(beanName, dependentBeans);
|
this.dependentBeanMap.put(canonicalName, dependentBeans);
|
||||||
}
|
}
|
||||||
dependentBeans.add(dependentBeanName);
|
dependentBeans.add(dependentBeanName);
|
||||||
}
|
}
|
||||||
|
|
@ -377,7 +378,7 @@ public class DefaultSingletonBeanRegistry extends SimpleAliasRegistry implements
|
||||||
dependenciesForBean = new LinkedHashSet<String>(8);
|
dependenciesForBean = new LinkedHashSet<String>(8);
|
||||||
this.dependenciesForBeanMap.put(dependentBeanName, dependenciesForBean);
|
this.dependenciesForBeanMap.put(dependentBeanName, dependenciesForBean);
|
||||||
}
|
}
|
||||||
dependenciesForBean.add(beanName);
|
dependenciesForBean.add(canonicalName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -455,7 +456,7 @@ public class DefaultSingletonBeanRegistry extends SimpleAliasRegistry implements
|
||||||
removeSingleton(beanName);
|
removeSingleton(beanName);
|
||||||
|
|
||||||
// Destroy the corresponding DisposableBean instance.
|
// Destroy the corresponding DisposableBean instance.
|
||||||
DisposableBean disposableBean = null;
|
DisposableBean disposableBean;
|
||||||
synchronized (this.disposableBeans) {
|
synchronized (this.disposableBeans) {
|
||||||
disposableBean = (DisposableBean) this.disposableBeans.remove(beanName);
|
disposableBean = (DisposableBean) this.disposableBeans.remove(beanName);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2009 the original author or authors.
|
* Copyright 2002-2010 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -145,8 +145,8 @@ public class SimpleAliasRegistry implements AliasRegistry {
|
||||||
*/
|
*/
|
||||||
public String canonicalName(String name) {
|
public String canonicalName(String name) {
|
||||||
String canonicalName = name;
|
String canonicalName = name;
|
||||||
// Handle aliasing.
|
// Handle aliasing...
|
||||||
String resolvedName = null;
|
String resolvedName;
|
||||||
do {
|
do {
|
||||||
resolvedName = this.aliasMap.get(canonicalName);
|
resolvedName = this.aliasMap.get(canonicalName);
|
||||||
if (resolvedName != null) {
|
if (resolvedName != null) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue