Spring关于Bean的加载----转换对应beanName
在上一文章《Spring关于Bean的加载》中已简略介绍了关于转换对应beanName。而且此步骤作为Bean加载的第一步也极为重要。现在我们直接从源码入手:
其中transformedBeanName(name)方法为beanName转换的执行逻辑,进入该方法会发现,里面还嵌套了多个方法,
其中BeanFactoryUtils.transformedBeanName(name)方法的功能就是去除FactoryBean的修饰符,此方法实现简单这里就不做详细介绍。
canonicalName(String name)方法则是从缓存中取指定alias所表示的最终beanName,这里的缓存指的是SimpleAliasRegistry中定义的一个数据类型为ConcurrentHashMap的数据结构---aliasMap,源代码如下
关键类及数据结构
aliasMap:定义在SimpleAliasRegistry类中,数据类型为ConcurrentHashMap,用于存放别名与最终BeanName的键值对