容器
是Spring框架的核心,是组件存活的地方。Spring容器使用DI管理所有组成应用系统的组件,协作组件之间建立联。而且,这些对象简洁易懂,降低耦合性,支持重用,容易被测试。
Spring提供了多种容器实现,可分为两类:Bean工厂 和应用上下文 。
1. BeanFactory :
由org.springframework.beans.factory.BeanFactory接口定义,是最简单的容器,提供了基础的依赖注入支持。
BeanFactory采用了工厂设计模式,负责创建和分发各种类型的Bean,创建协作对象间的关联关系,管理Bean的生命周期,调用
用户定义的初始化和销毁方法(如果定义了这些方法的话)等。
BeanFactory有多种实现,其中,最常用的是XMLBeanFactory,它根据XML文件中的定义装载Bean。在创建XMLBeanFactory
时,需要传递一个org.springframework.core.io.Resource的实例给构造器,此Resource实例用来提供XML文件给BeanFactory。
Spring提供了以下多种Resource的实现:
Resource实现 | 描述 |
1. org.springframework.core.io.ByteArrayResource | 定义内容由一组字节给定的资源 |
2. org.springframework.core.io.ClassPathResource | 定义可从classpath提起的资源 |
3. org.springframework.core.io.DescripiveResource | 定义包含资源描述符,但实际没有可读资源的资源 |
4. org.springframework.core.io.FileSyatemResource | 定义可从文件系统提取的资源 |
5. org.springframework.core.io.InputStreamResource | 定义可从输入流提取的资源 |
6. org.springframework.core.io.UrlResource | 定义可从给定URL提取的资源 |
7. org.springframework.web.portlet.context.PortletContextResource | 定义可用在portlet上下文中的资源 |
8. org.springframework.web.context.support.ServletContextResource | 定义可用在servlet上下文中的资源 |
例如使用FileSystemResource来创建一个XMLBeanFactory,代码如下: