BeanFactory的结构示意图
1、BeanFactory的结构示意图
2、BeanFactory中子接口的介绍
(1)ListableBeanFactory
该接口定义了访问容器中Bean基础信息的若干方法,查看Bean的个数【getBeanDefinitionCount】,获取Bean的配置名,查看容器是否包含某一个Bean等方法【containsBeanDefinition】。
(2)HierarchicalBeanFactory
父子级联的接口,子容器可以通过接口方法访问父容器。
(3)ConfigurableBeanFactory
核心接口之一,负责Bean的初始化和属性的set和构造函数的注入。
(4)AutowireCapableBeanFactory
定义将容器Bean按照某种规则进行自动的装配的方法【也就是后面Bean节点上的Autowire】。
(5)BeanDefinitionRegistry
Spring配置文件中每一个Bean节点元素在Spring容器都通过一个BeanDefinition对象表示,它描述了Bean的配置信息。而BeanDefinitionRegistry提供了向容器手动注册BeanDefinition对象的方法。
3、总结
从上面的体系结构中我们可以看出来。BeanFactory就是一个精密的机器。每一个类都负责不同的事情,但是他们最终的目的有没发现就是怎么把一个类的对象如何初始化,然后找一个地方存储起来,存储起来的规则是什么是根据byName,byType还是constructor等,然后在确认是不是单例的还是多例的,然后Bean的加载完毕以后那么等着的就是去注册BeanDefinition,每一个Bean节点对应了一个BeanDefinition,存储了Bean的名称,类路径,等相关的信息,存储起来以后最终放入一个BeanDefinitionMap中存储起来。(逆向思维思考一下问题:我们知道去买苹果,多个我们想到的肯定是用一个篮子装,折射到程序中我们可以发现如果是多个数据,还是表中的多条记录都是用一个集合去装载)。所以想象一个在Spring的Bean的注册过程中这么多Bean节点一个Bean节点对应一个BeanDefinition那么多个呢。肯定是用一个List<BeanDefinitionMap>.去装载。这个Map的类型是BeanDefinitionMao<String,BeanDefinition>。
阅读更多
- BeanFactory体系架构与FactoryBean体系结构
- BeanFactory到WebApplicationContext的结构 以及bean和spring容器的关系
- Spring源码学习之BeanFactory体系结构
- Spring IOC-BeanFactory的继承体系结构
- BeanFactory体系架构与FactoryBean体系结构
- Spring的BeanFactory体系结构
- IOC实现之BeanFactory体系结构(一)
- Spring源码学习之BeanFactory体系结构
- BeanFactory到WebApplicationContext的结构 以及bean和spring容器的关系
- 【转】spring BeanFactory 继承结构图
- Spring的BeanFactory体系结构(一)
- spring BeanFactory 结构
- spring BeanFactory层次结构UML图
- BeanFactory到WebApplicationContext的结构 以及bean和spring容器的关系
- Spring BeanFactory、ApplicationContext层次结构和BeanDefinition解析过程
- 容器扩展点2 BeanFactoryPostProcessor自定义元数据配置
- org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'springSessionReposit
- <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
- Spring杂记BeanFactory之getBean方法
- spring中在ApplicationContext或在BeanFactory中Bean的生命周期总结