image.png

    DefaultListableBeanFactory 继承了很多的接口,每个接口都有它的特殊含义

    • AliasRegistry:支持别名功能,一个名字可以对应多个别名
    • BeanDefinitionRegistry:可以注册、保存、移除、获取某个 BeanDefinition
    • BeanFactory:Bean 工厂,可以根据某个 bean 的名字、或类型、或别名获取某个 Bean 对象
    • SingletonBeanRegistry:可以直接注册、获取某个单例 Bean
    • SimpleAliasRegistry:它是一个类,实现了 AliasRegistry 接口中所定义的功能
    • ListableBeanFactory:实现了 BeanFactory 并在此基础上,增加了其他功能,可以获取所有 BeanDefinition 的 beanNames,可以根据某个类型获取对应的 beanNames,可以根据某个类型获取类型与 bean 的映射关系
    • HierarchicalBeanFactory:实现了 BeanFactory 并在此基础上,添加了获取 Parent BeanFactory 的功能,是父子容器的主要实现
    • DefaultSingletonBeanRegistry:它是一个类,实现了 SingletonBeanRegistry 接口,拥有了直接注册、获取某个单例 Bean 的功能
    • ConfigurableBeanFactory:在 HierarchicalBeanFactory 和 SingletonBeanRegistry 的基础上,添加了设置父BeanFactory、类加载器(表示可以指定某个类加载器进行类的加载)、设置Spring EL表达式解析器(表示该BeanFactory可以解析EL表达式)、设置类型转化服务(表示该BeanFactory可以进行类型转化)、可以添加BeanPostProcessor(表示该BeanFactory支持Bean的后置处理器),可以合并BeanDefinition,可以销毁某个Bean等等功能
    • FactoryBeanRegistrySupport:支持了 FactoryBean 的功能
    • AutowireCapableBeanFactory:是直接继承了 BeanFactory,在 BeanFactory 的基础上,支持在创建 Bean 的过程中能对 Bean 进行自动装配
    • AbstractBeanFactory:实现了 ConfigurableBeanFactory 接口,继承了 FactoryBeanRegistrySupport,这个BeanFactory 的功能已经很全面了,但是不能自动装配和获取 beanNames
    • ConfigurableListableBeanFactory:继承了 ListableBeanFactory、AutowireCapableBeanFactory、ConfigurableBeanFactory
    • AbstractAutowireCapableBeanFactory:继承了 AbstractBeanFactory,实现了AutowireCapableBeanFactory,拥有了自动装配的功能
    • DefaultListableBeanFactory:继承了 AbstractAutowireCapableBeanFactory,实现了ConfigurableListableBeanFactory 接口和 BeanDefinitionRegistry 接口,所以 DefaultListableBeanFactory 的功能很强大