美文网首页
AliasRegistry

AliasRegistry

作者: AlexS18_ | 来源:发表于2018-03-14 22:55 被阅读0次

    AliasRegistry接口定义了alias的基本操作。

    其中包含了一下几个接口:

    void registerAlias(String name, String alias);//为指定名称注册别名

    void removeAlias(String alias);//移除别名

    boolean isAlias(String name);//检查指定名称是被定义为别名

    String[] getAliases(String name);//返回指定名称的所有别名


    SimpleAliasRegistry类对AliasRegistry进行了实现,其中使用了Map对alias进行缓存。

    使用ConcurrentHashMap缓存别名与名称的映射关系

    为指定名称注册别名,有以下几步:

    1、校验输入参数。

    2、不允许别名与指定名称一致,且移除已注册列表中该别名(不管已注册列表中是否存在该别名)。

    3、如别名已注册则不再重复注册,根据是否允许覆盖条件判断是否抛出异常。

    4、递归检查指定名称与别名是否存在环形指向关联关系。

    5、注册别名。

    注册别名

    因为SimpleAliasRegistry根据名称获取别名列表时,会将直接、间接关系的别名均列出来,所以注册别名时不允许名称与别名见存在环形指向关联关系。

    递归检查别名关联关系 检查name是否直接或间接关联alias

    移除别名、检查指定名称是被定义为别名。

    根据指定名称获取所有别名,递归检索,其中包含直接指向的别名与间接指向的别名。

    根据指定名称获取别名列表 递归检索别名

    相关文章

      网友评论

          本文标题:AliasRegistry

          本文链接:https://www.haomeiwen.com/subject/txpqqftx.html