Optimize SimpleAliasRegistry hasAlias implementation

This commit reduces the number of loops and recursions in
the implementation of SimpleAliasRegistry#hasAlias().

Closes gh-24295
This commit is contained in:
Qimiao Chen 2020-01-06 18:28:24 +08:00 committed by Sam Brannen
parent 328e88d204
commit d0c2812dad
1 changed files with 5 additions and 10 deletions

View File

@ -26,6 +26,7 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.util.Assert;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
import org.springframework.util.StringValueResolver;
@ -36,6 +37,7 @@ import org.springframework.util.StringValueResolver;
* implementations.
*
* @author Juergen Hoeller
* @author Qimiao Chen
* @since 2.5.2
*/
public class SimpleAliasRegistry implements AliasRegistry {
@ -98,16 +100,9 @@ public class SimpleAliasRegistry implements AliasRegistry {
* @since 4.2.1
*/
public boolean hasAlias(String name, String alias) {
for (Map.Entry<String, String> entry : this.aliasMap.entrySet()) {
String registeredName = entry.getValue();
if (registeredName.equals(name)) {
String registeredAlias = entry.getKey();
if (registeredAlias.equals(alias) || hasAlias(registeredAlias, alias)) {
return true;
}
}
}
return false;
String registeredName = this.aliasMap.get(alias);
return ObjectUtils.nullSafeEquals(registeredName, name) || (registeredName != null
&& hasAlias(name, registeredName));
}
@Override