在Spring中,那些组成你应用程序的主体及由Spring Ioc容器所管理的对象,都被称之为bean。简单来讲,bean就是Spring容器的初始化、配置及管理的对象。除此之外,bean就与应用程序中的其他对象没有什么区别了。而bean定义以及bean相互间的依赖关系将通过配置元数据来描述。
容器:
org.springframework.beans.factory.BeanFactory是Spring Ioc容器的实际代表者,Ioc容器负责容纳此前所描述的bean,并对bean进行管理。
在Spring中,BeanFacyory是Ioc容器的核心接口。它的职责包括:实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。
Spring为我们提供了许多易用的BeanFactory实现,XmlBeanFactory就是最常用的一个。该实现将以XML方式描述组成应用的对象以及对象间的依赖关系。XmlBeanFactory类将获取此XML配置元数据,并用它来构建一个完全可配置的系统或应用。
从上图可以看到,Spring Ioc容器将读取数据元配置,并通过它来对应用中各个对象进行实例化、配置及组装。通常情况下我们使用简单直观的XML来作为配置元数据的描述格式。在XML配置元数据中我们可以对那些我们希望通过Spring Ioc容器管理的bean进行定义。
注:Spring Ioc容器至少包含一个bean定义,但大多数情况下会有多个bean定义。bean定义与应用程序中实际使用的对象一一对应。通常bean的定义包括:服务处对象、数据访问层对象、类似Struts Action的表示层对象、Hibernate SessionFactory对象、JMS Queue对象等等。通常bean的定义并不与容器中的领域对象相同,因为领域对象的创建和加载必须依赖具体的DAO和业务逻辑。
以下是一个基于XML的配置元数据的基本结构:
Spring Ioc容器的实例化:
XML配置元数据的结构:将XML配置文件拆分成多个部分是非常有用的。为了加载多个XML文件生成一个ApplicationContext实例,可以将文件路径作为字符串组传给ApplicationContext构造器。而beanFactory将通过bean defintion reader从多个文件中读取bean定义,这中方式各个配置并不会查觉到它们与其他配置文件的组合。另外一种方式就是使用一个或者多个<import/>元素来从另外一个或多个文件加载bean文件。所有的<import/>元素必须在<bean/>元素之前完成bean定义的导入。例子:
需要注意的就是根据Spring XML配置文件的Schema,被导入的文件必须是完全有效的XML bean定义文件,且跟节点必须是<beans/>元素。
喜欢学习可以加入裙:九四三零六四六四四