2.DefaultListableBeanFactory的顶层父类SimpleAliasRegistry分析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_31307269/article/details/80498524
/ * *
管理别名的通用接口。作为父接口为
* { @link org.springframework.beans.factory.support.BeanDefinitionRegistry }。
*
* /
public interface AliasRegistry {

	/ * *
	给定一个名称,为它注册一个别名。
	@param命名规范名称
	@param别名注册别名
	如果别名已经在使用中,则会抛出非法的州异常
	也不能被推翻
	* /
	void registerAlias(String name, String alias);

	/ * *
	从这个注册表中删除指定的别名。
	@param别名要删除的别名
	如果没有找到这样的别名,就会抛出非法的异常
	* /
	void removeAlias(String alias);

	/ * *
	确定这个给定的名称是否被定义为别名
	(相对于实际注册的组件的名称)。
	@param beanName要检查的bean名称
	@return是否给定的名称是别名
	* /
	boolean isAlias(String beanName);

	/ * *
	如果定义,返回给定名称的别名。
	@param的名称用来检查别名
	如果没有别名,则返回别名或空数组
	* /
	String[] getAliases(String name);

}

SimpleAliasRegistry实现了上述接口AliasRegistry,内部维护了一个【private final Map<String, String> aliasMap = new ConcurrentHashMap<String, String>(16); 】map对象用于别名的管理,key为别名,value为正常的名称,主要作为别名管理的一个简单实现


此外多了一个protected的方法

/ * *
返回是否允许别名覆盖。
默认是@code true。
* /
protected boolean allowAliasOverriding() {
    return true;
}
接口中的registerAlias方法说明如果别名已存在则直接抛出异常,由于有些需求可能需要别名覆盖,所以添加此方法是为了根据此方法的返回值来确定当别名冲突的时候是覆盖还是直接抛出异常

猜你喜欢

转载自blog.csdn.net/qq_31307269/article/details/80498524