Spring 一、各级架构与依赖关系

1. Spring各级架构及基本依赖关系

Spring模块结构图

  Spring总共大约有20多个模块,这些组件分别整合在Test、核心容器(Core Container)、AOP(Aspect Oriented Programming)和设备支持(Instrumentation)、数据访问及集成(Data Access/Integeration)、Web、报文发送(Messaging)中。

集成测试

  即Spring-test模块,主要为测试提供支持

核心容器

  由Spring-beans、Spring-core、Spring-context、Spring-expression4个模块组成。

  spring-Core和Spring-beans模块是Spring框架的核心,包含了控制反转(IOC/Inversion of Control)和依赖注入(DI/Dependency Injection);

  spring-context模块构建于核心模块基础之上,它扩展了BeanFactory,为它添加了Bean生命周期控制、框架事件体系以及资源加载透明化功能。此外该模块还提供了许多企业级支持,如邮件访问、远程访问、任务调度等,ApplicationContext是该模块的核心接口,它的超类是BeanFactory。

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

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

  spring-expression模块是统一表达式语言(EL)的扩展模块,可以查询、管理运行中的对象,同时也可以方便的调用对象方法、操作数组、集合等。

AOP和设备支持

  由spring-aop、spring-aspects和spring-instrument组成。

  spring-aop是Spring的另一个核心模块,是AOP主要的实现模块。作为继OOP后,对程序猿影响最大的编程思想之一,AOP极大地开拓了人们对于编程的思路。在Spring中,它是以JVM的动态代理技术(JDK InvocationHandler,Cglib MethodInterceptor)为基础,然后设计出了一系列的AOP横切实现,比如前置通知、返回通知、异常通知等,同时PointCut接口来匹配切入点,可以使用现有的切入点来匹配横切面,也可以扩展方法根据需求进行切入。
  
  spring-aspects模块集成自AspectJ框架,主要为Spring AOP提供多种AOP实现方法。

  spring-instrument模块是基于JAVA SE中的'java.lang.instrument'进行设计的,算是AOP的一个支援模块,主要作用是在JVM启用时,生成一个代理类,程序猿通过代理类在运行时修改类的字节,从而改变一个类的功能,实现AOP功能。

数据访问与集成

  由spring-jdbc、spring-tx、spring-orm、spring-jms和spring-oxm组成
  
  spring-jdbc模块是Spring提供的JDBC抽象框架的主要实现模块,用于简化Spring JDBC操作。

  spring-tx模块是spring JDBC事物控制实现模块。事物控制放在业务逻辑层,基于具体的业务逻辑为基础,如果事物操作失败,则整个事物回滚。

  spring-orm模块是orm框架支持模块,主要集成Hibernate、JPA(Java Persistence API)和JDO(Java Data Objects),用于资源管理、数据访问对象(DAO)的实现和事物策略。

  spring-oxm模块主要提供一个抽象层以支持OXM(Object to XML Mapping),用于将Java对象映射成XML数据、或者将XML数据映射成Java对象。如JAXB、XMLbeans、XStream等。
  
  spring-jms模块能够发送和接收消息。

Web组件

  由spring-web、spring-webmvc、spring-websocket和spring-webflux4个模块组成。
  
  spring-web模块为spring提供了最基础的web支持,主要建立与核心容器之上,通过Servlet或者Listeners来初始化IOC容器,也包含一些与web相关的支持。
  
  spring-webmvc模块是一个Web-Servlet模块,是现在Spring MVC(model view controller)的Web应用。  
  
  spring-websocket模块主要是与Web前端的全双工通讯的协议。

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

通信报文

  spring-messaging模块,是从Spring4开始新加入的模块,主要职责是为Spring框架集成一些基础的报文传送应用。

Spring模块之间依赖关系

2. Spring版本升级规律

语义化版本命名通过规则

 版本号格式为X.Y.Z(Major.Minor.Patch)

  X、Y、Z均为非负整数
  X 表示主版本号(Major),当API得兼容性变化时,X需要递增
  Y 表示此版本号(Ninor),当增加功能且不影响API兼容性时,Y递增
  Z 表示修改号(Patch),当做Bug修复(不影响API兼容性)时,Z递增

语义化版本

原文地址:https://www.cnblogs.com/Qkxh320/p/spring_01.html