今天开始正式进入主题Spring 5.2.2 Core Technologies(核心技术)的内容。
参考手册文档的这一部分涵盖了Spring框架绝对不可或缺的所有技术。其中最重要的是Spring框架的控制反转(IoC,Inversion of Control)容器。对Spring框架的IoC容器进行完全的了解之后,Spring的面向方面编程(AOP,Aspect-Oriented Programming)技术将得到全面的覆盖。Spring框架有自己的AOP框架,它在概念上易于理解,并且成功地解决了Java企业编程中80%的AOP需求。还介绍了Spring与AspectJ的集成(在企业中最成熟的AOP实现)。
一、IOC容器
1、IOC容器和Bean介绍
本章介绍控制反转(IoC)的Spring 实现原理。IoC也认为是依赖注入(DI)。对象通过构造函数参数、方法的参数或从构造方法或返回后在对象实例上设置的属性来定义其依赖关系(即,它们使用的其他对象)。容器然后在创建bean时注入这些依赖项。这个过程其实是bean的逆过程(叫做控制反转),通过类直接构造或类似服务定位模式等机制来控制其依赖项的实例化或实例的位置。
org.springframework.beans和org.springframework.context包是spring的IoC容器的基础。BeanFactory 接口提供了一种高级配置机制,能够管理任何类型的对象。ApplicationContext是BeanFactory的一个子接口。另外:
更容易与Spring的AOP集成
消息资源处理(用于国际化)
事件发布
特定于应用程序层的上下文,如用于web应用程序的WebApplicationContext。
简而言之,BeanFactory提供了配置框架和基本功能,ApplicationContext添加了丰富的企业特定功能。ApplicationContext是BeanFactory的完全实现(superset),在本章中专门用于Spring的IoC容器的描述。有关使用BeanFactory而不是ApplicationContext的更多信息在后续章节中说明,请关注我的公众号。
在Spring中,应用程序主要组成是由Spring IoC容器管理的对象即bean。bean是由Spring IoC容器实例化、组装和管理的对象。否则,bean只是应用程序中许多对象中的一个。bean以及它们之间的依赖关系反映在容器使用的配置元数据中。
2、容器介绍
org.springframework.context.ApplicationContext接口作为SpringIOC容器,负责实例化、配置和组装bean。容器通过读取配置元数据来获取实例化、配置和组装哪些对象的指令。配置元数据以XML、Java注释或Java代码表示。它希望构成应用程序的对象以及这些对象之间相互依赖关系。
Spring提供了ApplicationContext接口的几个实现。在独立应用程序中,通常创建ClassPathXmlApplicationContext或FileSystemXmlApplicationContext的实例。虽然XML是定义配置元数据的传统格式,但是可以通过提供少量的XML配置来声明性地支持这些元数据格式,从而容器使用Java注释或代码作为元数据格式。
在大多数应用程序场景中,不需要特意用代码来实例化一个或多个Spring IoC容器实例。例如,在web应用程序场景中,应用程序的web.XML文件中的一个简单的8行(或大约8行)样板web描述符XML通常就足够了(请参见[上下文创建])。如果使用Spring工具套件(一个Eclipse驱动的开发环境),只需点击几下鼠标或按键,就可以轻松地创建这个样板。
<?xml version="1.0" encoding="UTF-8"?>
下图显示了Spring工作原理的视图。应用程序类与配置元数据结合在一起,以便在创建和初始化ApplicationContext之后,您拥有一个完全配置且可执行的系统或应用程序。
未完待续(请持续关注我的公众号)。