Spring 概念与源码解析——别名系统(二)

Spring提供了很多容器实现,最核心的是DefaultListableBeanFactory,称为spring的“发动机”也不为过。查看DefaultListableBeanFactory的继承体系,可以看到最上游上的四个接口,分别是 BeanFactory, SigletonBeanRegistry , AliasReistry,BeanDefinitionRegistry。

可以大略看到,这些接口大致分为两类,右上角都是Registry注册器,左下角都是Factory工厂。

在这里插入图片描述
这篇文章暂时聚焦到较孤立和简单的AliasRegistry 接口和它的实现 SimpleAliasRegistry,看一下spring的别名体系。

顾名思义,AliasRegistry提供了别名的注册管理。与alias对应的是canonical(正名),SimpleAliasRegistry 维护了一个把别名和正名关联起来的map,key为别名,value为正名。别名关系是相对的和传递的,一条记录(Map.Entry)中的正名在另一条记录中可以是别名。

SimpleAliasRegistry 通过一些方法将服务暴露出来,包括

registerAlias:
isAlias:
hasAlias:
retriveAliases: 获取正名的所有别名
resolveAliases: 将map中所有的key和value使用 StringValueResolver 刷新一遍。
checkForAliasCircle: 检查是否有循环(别名与正名必须是有向无环的关系)
canonicalName:  获取正名(根据别名传递关系,找到关系链条的尾部)
还有其他一些方法,通过方法的命名就可以明白作用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值