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

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

Spring 概念与源码解析——别名系统(二)
这篇文章暂时聚焦到较孤立和简单的AliasRegistry 接口和它的实现 SimpleAliasRegistry,看一下spring的别名体系。

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

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

registerAlias:
isAlias:
hasAlias:
retriveAliases: 获取正名的所有别名
resolveAliases: 将map中所有的key和value使用 StringValueResolver 刷新一遍。
checkForAliasCircle: 检查是否有循环(别名与正名必须是有向无环的关系)
canonicalName:  获取正名(根据别名传递关系,找到关系链条的尾部)
还有其他一些方法,通过方法的命名就可以明白作用

相关文章:

  • 2021-06-27
  • 2022-01-15
  • 2021-10-25
  • 2021-07-26
  • 2021-11-03
  • 2022-12-23
  • 2021-12-18
  • 2021-12-26
猜你喜欢
  • 2021-04-22
  • 2022-01-21
  • 2021-11-03
  • 2022-01-16
  • 2022-12-23
  • 2021-06-06
相关资源
相似解决方案