Spring 主要模块
Spring框架遵循模块的架构模式,总共有20多个模块组成,包括核心容器、数据访问/集成、Web、AOP等等。这些模块为我们提供了开发企业级应用所需要的一切东西。在开发过程中,这些模块并不都是必须的,可以针对具体的应用自由的选择所需要的模块。还可以将Spring与其他框架进行集成,使得开发过程更有针对性、更有效率。
下面依次介绍这些模块。
(1)核心容器(Core Container)
可以看到,位于Spring结构图最底层的是其核心容器Core Container。Spring的核心容器由Beans、Core、Context和Expression Language模块组成,Spring的其他模块都是建立在核心容器之上的。
Beans和Core模块实现了Spring框架的最基本功能,规定了创建、配置和管理Bean的方式,提供了控制反转(IOC)和依赖注入(DI)的特性。
核心容器中的主要组件是BeanFactory类,它是工厂模式的实现,JavaBean的管理就由它来负责。BeanFactory类通过IOC将应用程序的配置以及依赖性规范与实际的应用程序代码相分离。
Context模块建立在Bean和Core模块之上,该模块像Spring框架提供了上下文信息。它扩展了BeanFactory,添加了国际化(I18N)的支持,提供了国际化、资源加载和校验等功能,并支持与模块框架如Velocity、Freemarker的集成。
Expression Language模块提供了一种强大的表达式语言来访问和操纵运行时对象。该表达式该表达式语言是在JSP2.1中规定的统一表达式语言的延伸,支持设置和获取属性值、方法调用、访问数组、集合和索引、逻辑和算数运算、明明变量、根据名称从IOC容器中获取对象等功能,也支持list投影、选择和list聚合功能。
(2)数据访问/集成模块
数据访问/集成模块由JDBC、ORM、OXM、JMS和Transaction这几个模块组成。在编写JDBC代码时常常需要一套程序化的代码,Spring的JDBC模块将这些程序化的代码进行抽象,提供了一个JDBC的抽象层,这样就大幅减少了开发过程中对数据库操作代码的编写,同事,也避免了开发者去面对复杂的JDBC API以及因为释放数据库资源失败而引起的一系列问题。
ORM模块为主流的对象关系映射(object-relation mapping)API提供了集成层,这些主流的对象关系映射API包括了JPA、JDO、Hibernate和IBatis。该模块可以将O/R映射框架与Spring提供的特性进行组合来使用。。
OXM模块为支持Object/XML映射的实现提供了一个抽象层,这些支持Object/XML映射的实现包括JAXB、Castor、XMLLBeans、JiBX和XStream。
JMS(Java Messaging Service)模块包含发布和订阅消息的特性。
Transaction模块体用了对声明式事务和编程事务的支持,这些事务类必须实现特定的接口,并且对所有的POJO都适用。
(3)Web模块
Web模块包括Web、Servlet、Struts和Protlet这几个模块。
Web模块提供了基本的面向Web的集成功能,如多文件上传、使用servlet监听器初始化IOC容器和面向Web的应用上下文,还包含Spring的远程支持中与Web相关的部分。
Servlet模块提供了Spring的Web应用的模型-视图-控制器(MVC)实现。
Struts模块提供了对Struts的支持,提供了将一个典型的Struts Web层集成在一个Spring应用程序中的支持类。
Protlet模块提供了一个在protlet环境中使用的MVC实现。
(4)AOP和Instrumentation模块
AOP模块提供了一个在AOP联盟标准的面向切面编程的实现,使用该模块可以定义方法拦截器和切点,将代码按功能进行分离,降低了它们之间的耦合性。利用source-levelde的元数据功能,还可以将各种行为信息合并到开发者的代码中。
Aspects模块提供了对AspectJ的集成支持。
Instrumentation模块提供了class istrumentation的支持和classloader实现,可以在特定的应用服务器上使用。
(5)Test模块
Test模块支持使用JUnit和TestNG对Spring组件进行测试,它提供一致的ApplicationContexts并缓存这下上下文,他还提供了一些mock对象,使得开发者可以独立的测试代码。
有关Spring的基本概念还有Spring框架模块的介绍到此为止,下一篇博文将展示一个基于Spring的HelloWorld程序。