`

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>。

 

 

 

  • 大小: 291.6 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics