环境配置
- git clone https://github.com/spring-projects/spring-framework
- 安装jdk8
- gradle build,https://github.com/spring-projects/spring-framework/wiki/Build-from-Source
- idea打开,https://github.com/spring-projects/spring-framework/blob/master/import-into-idea.md
DefaultListableBeanFactory类继承结构
DefaultListableBeanFactory这个类继承自两个部分,分别是BeanFactory和beandefinitionregistry。
BeanFactory是一个创建、获取bean的容器,beandefinitionregistry是一个存放beandefinition的map。
下面的类,有的是功能扩展:
BeanFactory:获取bean
HierarchicalBeanFactory:获得父beanfactory
ListableBeanFactory:通过type、注解等查找bean
ConfigurableBeanFactory:设置beanfactory的一些属性,例如parent beanfactory,(所以继承了HierarchicalBeanFactory)、classloader、解析器、scope
AutowireCapableBeanFactory:增加了可以自动装载的
ConfigurableListableBeanFactory:集大成者,合并接口,再增加一些补充功能
SingletonBeanRegistry:用于单例bean的获取注册,可以通过BeanFactory的接口实现,是容器暴露单例bean的接口
对内的功能提供:
FactoryBeanRegistrySupport:提供从factorybean的获取object的操作,这个类的操作都是protected,用来给子类提供服务,不对外开放
AbstractBeanFactory:给BeanWrapper注册属性编辑器、获取getMergedLocalBeanDefinition、通过beandefinition解析BeanClass
实现