Spring源码学习小记
1.ImportBeanDefinitionRegistrar
作用:可以动态获取到当前BeanDefinitionRegistry,从而往Bean容器中注入自己的BeanDefinition。
核心方法:registerBeanDefinition
使用:ibatis的@Mapper
2.FactoryBean
作用 :实现该接口类,会在spring注入两个类,一个是实现了FactoryBean的类,一个是Factorybean接口的方法getObject所返回的类,后续通过接口实现类获取对象时,获取的是方法所返回的类
核心方法:getObejct, getObjectType
示例:如果TestFactoryBean实现了Factory,通过实现getObject,返回了TestUser对象。如果通过spring的方法getBean(TestFactoryBean.class)所获取的对象类型为TestUser。
3.ibatis注解@Mapper原理简单理解
通过扫描包信息获取接口信息后,通过动态代理获取接口的实现类,通过FactoryBean实时获取生成的动态类的类型数据,并转换成BeanDefinition,最后通过ImportBeanDefinitionRegistrar将BeanDefinition注入Spring的Factory中,从而实现将接口转换为具体实现类的功能