Spring IOC (一)

Spring 框架中的核心组件主要包括:Core、Context 和 Beans.在这三个核心组件中要选择最重要的组件那就是非Beans莫属了,Bean 在spring中是真正的主角面向的的是Bean的编程(BOP,Bean Oriented programming).

Spring 主要解决的是关键问题是把对象之间的依赖关系通过配置文件来进行管理,这就是所谓的依赖注入机制,这个注入的关系由一个叫IOC的容器进行管理。

设计策略:构建一个数据结构,然后根据这个数据结构设计他的生存环境,并让它在这个环境中按照一定的规律在不停的运动,在它们的不停运动中设计一系列与环境或者与其他个体完成信息交换。

1.Core、Bean、Context 三者之间的关系:

 Bean就像是一场演出中的演员,Context 就是这场演出的背景,Core就是演出所运用的道具了。只有三者一起才能够具备演出一场好戏的基本条件。Bean包装的是object对象,而object中必然包含数据,如何给这些数据提供生存环境就是Context要解决的问题。对Context来说是要发现各个bean之间的关系,并为他们建立关系并且维护这种关系。所以Context就是Bean关系的集合。这个集合就是IOC容器,一旦建立起这种IOC容器spring就可以工作了。Core就是发现、建立和维护bean之间关系所需要的一系列工具。Core这个组件称作Util更好理解。

2.Bean 组件

Bean 组件在org.springframework.beans包下主要做的事情为:1> Bean的定义 2> Bean 的创建 3>Bean的解析

Bean工厂的继承关系图:

图 4. Bean 工厂的继承关系

BeanFactory 有三个子类:ListableBeanFactory、HierarchicalBeanFactory 和 AutowireCapableBeanFactory.

ListableBeanFactory 接口表示这些 Bean 是可列表的,而 HierarchicalBeanFactory 表示的是这些 Bean 是有继承关系的,也就是每个 Bean 有可能有父 Bean。AutowireCapableBeanFactory 接口定义 Bean 的自动装配规则。这四个接口共同定义了 Bean 的集合、Bean 之间的关系、以及 Bean 行为。

Bean 定义的类层次关系图:

图 5. Bean 定义的类层次关系图

Bean 的定义就是完整的描述了在 Spring 的配置文件中你定义的 <bean/> 节点中所有的信息,包括各种子节点。当 Spring 成功解析你定义的一个 <bean/> 节点后,在 Spring 的内部他就被转化成 BeanDefinition 对象。以后所有的操作都是对这个对象完成的。

Bean 的解析类:

图 6. Bean 的解析类

Context 组件:

Context 在 Spring 的 org.springframework.context 包下,前面已经讲解了 Context 组件在 Spring 中的作用,他实际上就是给 Spring 提供运行时环境保存对象的状态.

ApplicationContext 是 Context 的顶级父类,他除了能标识一个应用环境的基本信息外,他还继承了五个接口,这五个接口主要是扩展了 Context 的功能。

Context 的类结构图:

图 7. Context 相关的类结构图

ApplicationContext 继承了BeanFactory,ResourceLoader接口,主要包含两个方面:

  1. ConfigurableApplicationContext 表示Context是可以修改的,也就是构建Context中用户动态的添加或修改已有 的配置信息,他下面又有多个子类,其中最经常使用的是可更新的 Context,AbstractRefreshableApplicationContext类。

  2. WebApplicationContext 故名思议,就是为Web准备的Context他可以直接访问到ServletContext。

  3. ApplicationContext主要做的事为:标示一个应用环境、利用BeanFactory 创建对象、保存对象关系、能够捕获各 种事件。

 

 

猜你喜欢

转载自swift123.iteye.com/blog/1707374
今日推荐