美文网首页spring源码
Spring源码之Spring整体架构

Spring源码之Spring整体架构

作者: 夜阑人儿未静 | 来源:发表于2018-10-26 22:40 被阅读8次

        Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。Spring大概由20种模块组成,分为核心容器(Core Container), 数据访问/集成(Data Access/Integration), Web, AOP, 工具(Instrumentation), 消息(Messaging), 测试用例(Test)。

Spring整体架构图

1.核心容器(Core Container)

      包含Core、Beans、Context和Expression Language模块:

      (1)core 主要包含Spring框架基本的核心工具类

      (2)beans 包含访问配置文件、创建和管理bean以及进行IoC/DI操作的相关类

      (3)context 构建与Core和Beans之上,继承了Beans的特性,扩展添加了国际化、时间传播、资源加载和对Context的创建和支持。ApplicationContext接口便是这个的关键

      (4)expression提供 一个强大的表达式语言用于在运行时查询和操作对象,该语言支持设置/获取属性值,属性的分配,方法的调用,访问数组上下文、容器和索引器、逻辑和算是运算符、命名变量以及从Spring的容器中根据名称检索对象

2.数据访问/集成(Data Access/ Integration)

       包含JDBC, ORM, OXM, JSM,Transactions

          (1)JDBC(Java DataBase Connectivity) 提供了JDBC抽象层,消除了冗长的JDBC编码和解析数据库厂商特有的错误代码.

    spring-tx 为实现了特定接口的类提供了可编程的声明式事务管理支持,对所有的POJOs都适用

          (2)ORM(Object Relational Mapping) 提供了对象相关映射(ORM)集成,包含JPA, JDO, Hibernate,使用spring-orm模块可以将这些框架与spring提供的特性结合在一起使用,比如事务管理.

          (3)OXM(Object/XML Mapper) 提供了对Object/Xml Mapping实现的抽象,包括JAXB,Castor, XMLBeans, JiBX以及XStream.

           (4)JSM(Java Messaging Service) 包含了一些生产和消费消息的特性,从spring Framework 4.1开始,提供了与spring-messaging集成.

           (5)Transactions 模块支持事务管理。

3.Web

         包含了Web、WebServlet、WebSocket和Porlet模块

          (1)Web 提供了基础的面向Web的集成特性

          (2)WebServlet 包含Spring的model-view-controller(MVC)实现,并集成了Spring框架的所有其他特性

          (3)WebSocket 目的是浏览器与服务端建立全双工的通信方式,解决http请求-响应带来过多的资源消耗

          (4)Web-Porlet模块:提供了用于Portlet环境和Web-Servlet模块的MVC的实现

4.AOP

          包含AOP,Aspects,Instrument,Messaging

          (1)AOP 提供了一个AOP联盟标准的面向方面编程的实现,它允许你定义方法拦截器与切入点,从而将逻辑代码与实现函数进行分离

          (2)Aspects 提供了与AspectJ的集成

          (3)Instrument 提供了一定的应用服务器中使用类工具的支持和类加载器实现

          (4) Messaging是spring4新增加的模块,包含了一部分主要的基于message的应用的实现

5.Test

          该模块通过Junit或TestNG对spring的组件提供了单元测试和集成测试

相关文章

网友评论

    本文标题:Spring源码之Spring整体架构

    本文链接:https://www.haomeiwen.com/subject/kytrtqtx.html