Spring 的产生,主要是为了帮助用户简化开发流程,提高代码生产效率。利用合理的配置文件,可实现程序的控制。同时,为了方便开发者编写,又提供了方便的事务处理能力以及第三方框架整合能力。Spring 的整体架构如图 1 所示。
图 1 Spring 整体架构
核心容器核心容器(Core Container)包括 Beans 模块、Core 模块、Context 模块和 Expression Language 模块。
Beans模块提供框架的基础部分,主要用于实现控制反转(依赖注入)功能。其中,Bean Factory 是容器的核心部分,其本质是工厂设计模式实现,提倡面向接口编程,对象间的关系由框架通过配置关系进行管理,所有的依赖都由 Bean Factory 来维护。
Core模块封装了框架依赖的最底层部分,包括资源访问、类型转换和其他的常用工具类。
Context模块以 Core 和 Bean 模块为基础,集成 Beans 模块功能并添加资源绑定、数据验证、国际化、Java EE 支持、容器生命周期等,核心接口是 ApplicationContext。
Expression Language(EL)模块表达式语言支持,支持访问和修改属性值,方法调用,支持访问及修改数组、容器和索引器、命名变量,支持算术和逻辑运算,支持从 Spring 容器获取 Bean,也支持列表透明、选择和一般的列表聚合等。利用表达式语言,可以更加灵活地控制配置文件。
切面编程模块切面编程模块包含 AOP 模块、Aspects 模块和 Instrumentation 模块。
AOP(Aspect Oriented Programming)模块符合 AOP Alliance 规范的面向切面编程实现,提供了如日志记录、权限控制、性能统计等通用功能和业务逻辑分离技术,能动态地把这些功能添加到需要的代码中,从而降低业务逻辑和通用模块的耦合。
Aspects模块提供了 AspectJ 的集成,利用 AspectJ 表达式可以方便地实现切面管理。
Instrumentation模块是 Java 5 之后提供的特性。使用 Instrumentation,开发者可以构建一个代理,用来监测运行在 JVM 上的程序。监测一般是通过在执行某个类文件之前,对该类文件的字节码进行适当修改进行的。
数据访问/集成模块数据访问/集成(Data Access/Integration)模块包含事务管理模块、JDBC 模块、ORM 模块、OXM 模块和 JMS 模块。
事务管理模块用于 Spring 事务管理 *** 作,只要是 Spring 管理的对象,都可以利用此事务模块进行控制。支持编程和声明式两类方式的事务管理。
JDBC模块提供了 JDBC 的 *** 作模板,利用这些模板可以消除传统冗长的 JDBC 编码和必需的事务控制,同时可以使用 Spring 管理事务,无须额外控制事务。
ORM模块提供了实体层框架的无缝集成,包括 Hibernate、JPA、MyBatis 等,同时可以使用 Spring 实现事务管理,无须额外控制事务。
OXM模块提供了 Object/XML 映射,可以将 Java 对象映射成XML数据,或者将 XML 数据映射成 Java 对象。Object/XML 映射实现包括 JAXB、Castor、XMLBeans 和 XStream。
JMS模块用于 JMS(Java Messaging Service)组件整合,提供了一套消息“生产者-消费者”处理模型。JMS可以用于在两个应用程序之间或分布式系统中,实现消息处理与异步通信。
Web(MVC / Remoting)模块Web(MVC / Remoting)模块包含 Web 模块、Servlet 模块、MVC 框架模块和 Porlet 模块。
Web模块提供了基础 Web 功能,如多文件上传、集成 IoC 容器、远程过程访问(RMI、Hessian、Burlap)以及 Web Service 支持,并提供了 RestTemplate 类来进行 Restful Services 访问。
Servlet模块提供了 Spring MVC Web 框架实现。Spring MVC 框架提供了基于注解的请求资源注入,可以更简单地进行数据绑定、数据验证和一套非常易用的 JSP 标签,完全无缝地与其他 Spring 技术进行协作。在此我向大家推荐一个架构学习交流圈。交流学习伪鑫:1253431195(里面有大量的面试题及答案)里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多
MVC框架模块提供了与常用 MVC 开发框架的整合,如 Struts、JSF 等。
Porlet模块Portal 是一个基于 Web 的应用,它能提供个性化、单点登录、不同源的内容聚合和信息系统的表示层集中。聚合是整合不同 Web 页面源数据的过程。
Test模块支持 JUnit 和 Test 测试框架,而且额外提供了一些基于 Spring 的测试功能。例如,可在测试 Web 框架时模拟 HTTP 请求功能。或者启动容器,实现依赖注入管理。
Spring 本身提供了对象管理容器,由于 Java EE 项目都是构建在 Web 容器之上的,所以在实际开发过程中经常可看到如图 2 所示的运行场景。
图 2 Spring 实际运行场景
通过图 2 可以发现,在 Spring 框架上进行项目构建过程之中,是以 Spring 的核心容器实现的基本结构,而后利用 Spring 中提供的系列整合技术根据自身项目的需求简化 ORMapping 组件的开发,再利用 AOP 与 AspectJ 实现业务层事务控制。
对于 Web 端可以与 Struts、JSF 等常用开发框架整合,也可以直接使用 SpringMVC 进行整合。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)