AliasRegistry

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

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

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

根据指定名称获取别名列表
递归检索别名
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 137,173评论 19 139
  • 李永章 下雨,下雨大雨,中雨,小雨现在窗外是毛毛唉垓下雨时它不下这不该下时它下起来没完没了。当当有人敲门是以加快递...
    风铃_f1d6阅读 383评论 0 0
  • “你不会因为没有谁而变得不完整。也不会因为有谁而变得完整。你本身就是完整。” ——火星爷爷...
    lotus热爱阅读 399评论 0 1

友情链接更多精彩内容