Spring 容器是 Spring 框架的核心。容器将创建对象,把它们连接在一起,配置它们,并管理他们的整个生命周期从创建到销毁。Spring 容器使用依赖注入来管理组成一个应用程序的组件。这些对象被称为 Spring Beans。在Spring框架中提供了两个核心容器:BeanFactory容器和ApplicationContext容器。
- Spring中的BeanFactory容器
这是一个最简单的容器,它主要的功能是为依赖注入提供支持, 在 Spring 中,有大量对 BeanFactory 接口的实现。其中,最常被使用的是 XmlBeanFactory 类。这个容器主要是通过xml文件来读取配置信息的,从而装配Bean。该加载配置文件信息的语法如下:
从代码中可以看出,该加载配置文件的方式在实际开发中已经很少用了。 - Spring中的ApplicationContext容器
Application Context 是 spring 中较高级的容器。和 BeanFactory 类似,它可以加载配置文件中定义的 bean,将所有的 bean 集中在一起,当有请求的时候分配 bean。其中该容器的常用的实现接口的类有两种方式:
- 通过FileSystemXmlApplicationContext加载
该方式加载,需要从指定的文件系统路径(绝对路径)中寻找指定的xml配置文件,找到并装载完成ApplicationContext的实例化工作,其加载配置文件信息的语法如下:
- 通过ClassPathXmlApplicationContext加载
该加载配置的与第一种通过FileSystemXmlApplicationContext方式不同的是,获取配置文件路径的方式不一样,第一种方式是通过文件的系统路径(绝对路径)中寻找指定的xml配置文件,而ClassPathXmlApplicationContext是通过类路径来加载配置文件的,其加载配置文件信息的语法如下:
那么在实际开发过程中,到底用哪一种方式来加载配置文件来实例化对象呢?从上面的两种方式来看,不同的是获取配置文件路径方式不同。显然,在实际开发中是通过获取类路径来加载配置文件的,因为用文件系统路径的话,会导致程序的灵活度变差,所以一般会提倡ClassPathXmlApplicationContext方式来加载配置文件。
当然,这些配置方式通常是在Java项目中常用的配置方式,如果在Web项目中,一般ApplicationContext容器的实例化工作会交给Web服务器来完成。Web服务器实例化ApplicationContext容器时,通常会使用基于ContextLoaderListener实现,此种方式只需要在web.xml中加如下代码: