关键词:Spring容器、BeanFactory、ApplicationContext

  

一、容器

     在Java中,如果有一个类是专门用来存放其他类的对象的,那么这个类就叫做容器(或者集合,集合就是将若干个性质相同或相近的类对象组合在一起而形成的一个整体)

    Java容器类:List、ArrayList、Vector、Map、Hashtable、HashMap等

    Spring容器:ApplicationContext

    web容器:tomcat、webLogic、webSphere、Resin

 

二、Spring容器

1、概述 

     Spring提供容器功能,专门用来存放和管理应用中各对象的生命周期、对象间的依赖关系

     Spring容器是Spring的核心,一切SpringBean均存储在Spring容器内,并通过Ioc技术(->因此也称SpringIOC容器)进行管理;Spring容器是一个bean工厂(BeanFactory),应用中各bean的实例化、获取、销毁等均由这个bean工厂管理

    简言之,Spring容器就是一个Java编写的程序,之前必须由应用自身编写逻辑代码以管理对象及对象间关系,现在将都由这个程序(容器)自动管理维护。

2、是什么

    在Spring中,org.springframework.context.ApplicationContext接口用于完成容器的配置、初始化、管理bean;而把某个实现了ApplicationContext接口的类的实例,就称之为一个Spring容器,也即从代码层面"Spring容器就是一个ApplicationContext"

    在一般java工程中,可通过代码显示new一个ClassPathXmlApplicationContextFileSystemXmlApplicationContext以初始化一个Spring容器;

    在web工程中,一般通过在web.xml中配置的方式以初始化一个Spring容器

3、Web工程的Spring配置

    context-param:contextConfigLocation指定Spring容器初始化时读取配置文件的位置

    listener:ContextLoaderListener类(->该类是标准SpringWeb工程中Spring开始干活的切入点,这是因为该类实现了ServletContextListener,在web容器启动时该类将对Spring容器进行初始化)用于启动web容器(如tomcat)去读取配置文件并完成Spring容器的初始化

4、SpringIOC容器初始化过程:

    SpringIOC容器启动时,先读取应用程序提供的Bean配置信息(XML<bean>、Java类@Configuration、注解@Autowire),然后在Spring容器中生成一份Bean配置注册表,然后根据Bean注册表实例化Bean和装配好Bean间依赖关系,并将各Bean实例放入到Spring容器(Bean缓存池,基于HashMap实现) -> 上层应用即可使用这些Bean实例