简介
文档地址
| 链接地址 | 描述 |
|---|---|
| docs.spring.io/spring-fram… | spring官网文档的介绍 |
| docs.spring.io/spring-fram… | api接口文档 |
-
BeanFactory用于访问 Spring bean 容器的根接口。BeanFactory API 为 Spring 的 IoC 功能提供了底层基础。
-
BeanFactory 和相关接口(比如 BeanFactoryAware、InitializingBean、DisposableBean)是其他框架组件的重要集成点。
接口介绍
| 修饰符和类型 | 接口名称 | 描述 |
|---|---|---|
| boolean | containsBean(String name) | bean 工厂是否包含具有给定名称的 bean 定义或外部注册的单例实例 |
| String[] | getAliases(String name) | 返回bean的别名 |
| T | getBean(Class requiredType) | 根据给定类型返回bean的实例 |
| T | getBean(Class requiredType, Object... args) | 获取bean,通过指定类型和创建时的参数 |
| Object | getBean(String name) | 获取bean,通过bean名称 |
| T | getBean(String name, Class requiredType) | 获取bean实例,通过名称和指定的类型 |
| Object | getBean(String name, Object... args) | 获取bean实例,通过名称和创建时的参数 |
| ObjectProvider | getBeanProvider(Class requiredType) | 获取bean的提供者,通过指定的类型 |
| ObjectProvider | getBeanProvider(ResolvableType requiredType) | 获取bean的提供者,通过bean的可解析类型 |
| Class<?> | getType(String name) | 获取bean的类型,通过bean 名称 |
| Class<?> | getType(String name, boolean allowFactoryBeanInit) | 获取bean类型,通过名称和是否可以初始化FactoryBean |
| boolean | isPrototype(String name) | 通过bean名称判断bean是否是原型模式 |
| boolean | isSingleton(String name) | 通过bean名称判断bean是否是单例模式 |
| boolean | isTypeMatch(String name, Class<?> typeToMatch) | 检查具有给定名称的 Bean 是否与指定的类型匹配 |
| boolean | isTypeMatch(String name, ResolvableType typeToMatch) | 检查具有给定名称的 Bean 是否与指定的类型匹配 |
重要继承实现类
| 名称 | 描述 |
|---|---|
| HierarchicalBeanFactory | 支持层次结构,父子级的 |
| AutowireCapableBeanFactory | 支持自动装配的 |
| ListableBeanFactory | 支持列表的 |
BeanFactory的创建
创建的是DefaultListableBeanFactory
DefaultListableBeanFactory的层级结构
来关注下DefaultListableBeanFactory中一个很重要的属性beanDefinitionMap。通过xml配置的bean,注解方式获取的bean都会包装成BeanDefinition对象注册到这个map中。
BeanDefinition
BeanDefinition 描述了一个 bean 实例,该实例具有属性值、构造函数参数值以及具体实现提供的更多信息。可以通过BeanFactoryPostProcessor修改BeanDefinition的信息。
总结
- BeanFactory作为Spring的bean工厂,提供了生产bean能力
- 创建DefaultListableBeanFactory为基准使用
- 通过xml配置的bean获取注解等方式的bean都会包装成spring的内置对象BeanDefinition,再存储到DefaultListableBeanFactory中的map集合中为后续处理做准备