本参考文档涵盖了Spring框架中绝对不可或缺的核心技术。其中最重要的是Spring框架的反转控制(IOC)容器技术、面向方面编程(AOP)技术,都得到了全面的覆盖。Spring框架有它自己的AOP框架,它在概念上易于理解,它成功地解决了Java企业编程中AOP需求的80%个功能。还提供了Spring与AspectJ集成的覆盖。
IoC容器
1.1.Spring IOC容器和bean简介
IOC也称为依赖注入(DI)。它是一个过程,对象仅通过构造函数参数、工厂方法的参数或从工厂方法构造或返回对象实例后在其上设置的属性来定义其依赖项(即与之一起工作的其他对象)。然后,容器在创建bean时注入这些依赖项。这个过程基本上是bean本身的逆过程(因此称为控制反转),通过直接构造类或服务定位器模式等机制来控制其依赖项的实例化或位置。
org.spring framework.beans和org.springframework.context包是Springframework的IOC容器的基础。BeanFactory接口提供了一种高级配置机制,能够管理任何类型的对象。ApplicationContext是BeanFactory的子接口。它具有:
- 更容易与Spring的AOP功能集成
- 消息资源处理(用于国际化)
- 事件发布
- 应用层特定的上下文,如用于Web应用程序的WebApplicationContext。
简而言之,BeanFactory提供了配置框架和基本功能,ApplicationContext添加了更多特定于企业的功能。applicationContext是BeanFactory的一个完整的超集,在本章中专门用于描述Spring的IOC容器。
在Spring中,构成应用程序主干并由SpringIOC容器管理的对象称为bean。bean是一个由SpringIOC容器实例化、组装和管理的对象。因此,bean只是应用程序中许多对象之一。bean以及它们之间的依赖关系反映在容器使用的配置元数据中。
1.2.容器概述
org.springframework.context.ApplicationContext接口表示Spring IOC容器,负责实例化、配置和组装bean。容器通过读取配置元数据获取关于要实例化、配置和组装的对象的指令。配置元数据包括XML、Java注释或Java代码。它允许您表示组成应用程序的对象以及这些对象之间的丰富依赖关系。
Spring提供了ApplicationContext接口的几个实现。在单独JAVA应用程序中,通常创建ClassPathXMLApplicationContext或FileSystemXMLApplicationContext的实例。虽然XML是定义配置元数据的传统格式,但您可以通过提供少量XML配置来指示容器使用Java注释或JAVA代码作为元数据格式,以声明性地支持对这些附加元数据格式的支持。
在大多数应用程序场景中,不需要用户编写代码来实例化Spring IOC容器的一个或多个实例。例如,在Web应用程序场景中,应用程序web.xml文件加入几行代码就可以。如果您使用Spring Tool Suite (一个Eclipse支持的开发环境),只需点击几下鼠标或按键,就可以轻松地完成这个配置。
下图显示了Spring如何工作的高级视图。应用程序类与配置元数据结合在一起,这样,在创建和初始化ApplicationContext之后,您就拥有了一个完全配置且可执行的系统或应用程序。