内容来自《Java Web 程序员面试笔试宝典》
首先,我们来了解一下Spring的结构体系。Spring发展至今总共有20多个模块,将来应该还会有更多的模块出现。在最新的Spring5中,这些组件又整合在核心容器(Core Container)、AOP(Aspect OrientedProgramming)和设备支持(Instrmentation)、数据访问及集成(DataAccess/Integeration)、Web、报文发送(Messaging)、Test等6个模块集合中。图2-1是Spring5的体系结构图。
• 图2-1 Spring5体系结构图
每个模块集合或者模块可以单独存在,也可以任意组合存在。下面简单介绍。
1)核心容器:由Spring-beans、Spring-core、Spring-context和Spring-expression共4个模块组成。
Spring-beans和Spring-core模块是Spring框架的核心模块,包含了控制反转(Inversion of Control, IoC)和依赖注入(DependencyInjection, DI)。BeanFactory接口是Spring IoC容器的核心接口,它是工厂模式的具体实现。BeanFactory容器实例化后并不会自动实例化Bean,只有当Bean被使用时BeanFactory容器才会对该Bean进行实例化与依赖关系的装配。
Spring-context模块基于核心模块,扩展了 BeanFactory,添加了对 Bean 生命周期的控制、框架事件体系及资源加载透明化等功能。此外该模块还提供了许多企业级支持:如邮件访问、远程访问、任务调度等,ApplicationContext 是该模块的核心接口,它是 BeanFactory 的超类,与 BeanFactory 不同,ApplicationContext 容器实例化后会自动对所有的单实例 Bean 进行实例化及依赖关系的装配,使之处于可用待用状态。
Spring-expression模块是统一表达式语言(EL)的扩展模块,可以查询、管理运行中的对象,同时也可以地方便调用对象方法、操作数组、集合等。它的语法类似于传统EL,但提供了额外的功能,最出色的要数函数调用和简单字符串的模板函数。这种语言的特性是基于Spring产品的需求而设计的,它可以非常方便地同Spring IoC进行交互。
2)AOP和设备支持:由 Spring-aop、Spring-aspects和Spring-instrument共3个模块组成。