Spring深入理解-Spring5系统架构

导语
  在之前的分享中我们知道Spring中有很多的模块,大约有20个不同的模块,由一千多个不同的文件构成。这些模块课可以分为核心容器、AOP和设备支持、数据访问与集成、Web组件、通信报文和集成测试、集成兼容等类型。组成Spring框架的每个模块都可以单独存在,也可以多个模块联合实现某个功能。下面就来分别说说Spring5中的各个模块

在这里插入图片描述

核心容器

  核心容器由如下四个模块组成

  • spring-beans
  • spring-core
  • spring-context
  • spring-expression

  spring-beans和spring-core模块是Spring框架的核心模块,包含了控制反转IOC和依赖注入DI。BeanFactory使用控制反转的方式对应用程序代码进行分离。但是BeanFactory是实例化之后并不会自动实例化Bean,而是当Bean被使用的时候,才会对所要使用的Bean进行装配。也就实例化和关系绑定操作。

  spring-context 模块构架在核心模块之上,也是标志着对BeanFactory的扩展,为Bean添加了生命周期控制、框架事件体系以及资源加载透明化等基础功能支持。除此之外我们还知道,Spring提供了很多的企业的技术支持,例如邮件访问、远程访问、任务调度等功能。而spring-context中ApplicationContext 就是这些功能的核心的接口,它是继承了BeanFactory。但是与BeanFactory不同的是,ApplicationContext实例化之后会自动对所有的单实例Bean进行实例化以及依赖装配的操作,让这些Bean时刻处于待使用状态。

  spring-context-support 模块是对Spring IOC容器以及子容器的扩展支持

  spring-context-indexer 模块是Spring的类的管理组件和Classpath的扫描组件

  spring-expression 模块是统一表达式语言(EL)的扩展模块,可以查询、管理运行中的对象,同时通过这个方式也可以很方便的调用到对象方法、操作数组、集合等。相比较于传统的EL语言,提供了很多的额外的功能,例如函数调用、字符串模板函数。也是为了Spring 可以更好的实现Spring IOC的交互操作。

AOP和设备支持

  AOP 和设备支持是由如下的三个模块组成

  • spring-aop
  • spring-aspects
  • spring-instrument

  spring-aop 是Spring 的另一个核心模块,是AOP主要的实现模块。作为继OOP之后对影响比较大的编程思想之一,AOP扩展了开发人员的编程思路。Spring以JVM的动态代理技术为基础,设计出了一系列的AOP横向切面实现,例如前置的通知、返回通知、异常通知等。PointCut 接口可以匹配切点,可以使用现有的切入点来设计横切面,也可以扩展相关方法根据需求进行切入。

  spring-aspects 模块集成了AspectJ框架,为AOP功能提供了很多的实现方法。

  spring-instrument 模块主要是 Java SE 的java.lang.instrument的扩展,算是AOP的支持模块,主要在JVM启动的时候生成一个代理类,通过代理类的方式在运行时修改字节,这样就可以改变一个类功能,实现AOP操作。

数据访问与集成

  数据访问与集成由如下的五个模块组成

  • spring-jdbc
  • spring-tx
  • spring-orm
  • spring-oxm
  • spring-jms

  spring-jdbc 模块是Spring提供的JDBC抽象框架的实现模块,简化的传统的JDBC操作,为JDBC提供了模板的方式、关系型数据库通过对象的方式、SimpleJdbc方式、事务等方式,方便的传统JDBC开发方式。其中主要的实现类有JdbcTemplate、SimpleJdbcTemplate 以及 NamedParameterJdbcTemplate。

  spring-tx模块是Spring JDBC事务控制实现模块。Spring对事务做了很多的封装,通过AOP设置,可以在任何一层次进行配置。但是再很多的开发中通过JDBC直接实现事务控制还是比较有优势的。
  事务是以业务逻辑为基础,一个完整的业务应该对业务层里的一个方法,如果业务操作失败,则需要整个的事务回滚,所以对于事务的控制一般要放到业务层中。而持久层中应该遵循一个重要的原则:保证其中所有的操作都是原子性的操作,持久层的每个方法都是不可分割的,所以需要注意Spring JDBC控制事务的时候的特殊性。

  spring-orm 模块是ORM框架支持模块,主要集成 Hibernate 、Java Persistence API 和Java Data Object 用于资源的管理以及数据库访问对象DAO的实现和事务操作。

   spring-oxm 模块主要提供了一个抽象层以支撑 OXM (Object-to-XML-Mapping)他是一个O/M-mapper,将Java对象映射成XML数据,或者将XML数据映射成Java对象。例如JAXB、Castor、XMLBeans、JiBX 和XStream等。

  spring-jms模块能够发送和接收消息,从Spring 4.1 开始,它还提供了对spring-messageing模块的支撑。

Web组件

  Web模块由如下的四个模块组成

  • spring-web
  • spring-webmvc
  • spring-websocket
  • spring-webflux

  spring-web模块是为Spring框架提供了最为基础的Web支持,主要建立在核心容器之上,通过Servlet 或者 Listeners来初始化IoC容器,也包含一些Web相关的支持。

  spring-webmvc模块是一个Web-Servlet模块,实现了Spring MVC 的Web应用。

  spring-websocket 模块是与Web前端进行全双工的通讯的协议支持

  spring-webflux 是一个新式的非阻塞函数式Reactive Web框架,可以用来建立异步的、非阻塞的、事件启动的服务,并且扩展性非常好。

通信报文

   通信报文也就是spring-messaging模块,它是Spring 4中 新加入的一个模块,主要是为Spring框架集成了基础的报文传送应用。

集成测试

  集成测试spring-test 模块,主要为测试提供支持,使得在不需要将程序发布到线上的情况下,能够进行单元测试和集成测试。

集成兼容

  集成兼容是spring-framework-bom模块,主要解决的就是不同模块之间依赖版本的问题。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nihui123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值