a3.spring5系统架构

架构图

* Spring约20个模块, 1300多个不同文件;
* Spring中每个模块都可以单独存在;

* 6大模块集合:
    * 核心容器: Core Container
    * AOP和设备支持(Instrmentation)
    * 数据访问/继承: Data Access/Integeration
    * web
    * 报文发送: Messaging
    * Test

在这里插入图片描述

核心容器

  • 组成:
* spring-beans、spring-core、spring-context、spring-expression
  • spring-core , spring-beans
* 是Spring框架的核心模块;
* 包含了控制反转(IOC)和依赖注入(DI)

* 核心借口BeanFactory:
    * Spring框架的核心接口;(BOP概念的引入)
    * 是工厂模式的具体实现;
    * BeanFactory容器实例化后, 并不会直接装配Bean;
    * 当Bean被使用时, BeanFactory会实例化Bean, 并根据依赖装配Bean;
  • spring-context
* 架构于核心模块之上;
* 扩展了BeanFactory:
    * 添加了Bean生命周期,框架事件,资源加载透明化;
* 提供企业级支持:
    * 邮件访问, 远程访问, 任务调度等;

* 核心接口: ApplicationContext:
    * 是BeanFactory的超类;
    * 与BeanFactory不同, ApplicationContext容器初始化后, 就会创建Bean实例, 并根据bean依赖进行装配;
    * 封装后, 保存在IOC容器中, 待用状态;

* spring-context-support:
    * 对IOC容器的扩展支持;
* spring-context-indexer
    * 类管理组件和Classpath扫描;
* spring-expression:
    * 模块统一表达式语言的扩展模块(EL)的扩展模块;
    * 可以查询和操作运行中的对象; 为和IOC容器交互提供便利;

AOP和设备支持

  • 组成
spring-aop、spring-aspects 和 spring-instrument
  • spring-apo
* 是spring的另一个核心模块;
* 基于JVM动态代理技术:
    * 定义了spring实现AOP规则:
        * 用户可根据规则, 制定自己的切面和增强;
    * 并提供了一系列实现;
        * 比如事物, 日志等;
  • spring-aspects
* 集成AspectJ框架;
* 为Spring AOP提供多种AOP实现方案;
  • spring-instrument
* 是基于 JAVA SE 中的"java.lang.instrument"进行设计的;
* 属于AOP的一个支援模块, 提供了动态代理时生成字节码文件的技术;

数据访问与集成

  • 组成
spring-jdbc、spring-tx、spring-orm、spring-jms、spring-oxm
  • spring-jdbc
* 提供了jdbc简单实现, jdbc模板, 事物管理(spring-tx)等技术;
* 用以简化jdbc编程;
  • spring-tx
* 是spring-jdbc的事物控制实现模块;
* 利用AOP技术, 对事物做了一个很好的封装;
  • spring-orm
* 是ORM框架支持模块;(Hibernate)
* 主要用于:
    * 资源管理;
    * 数据访问;
    * 事物;
  • spring-oxm
* 是OXM(Object-to-XML-Mapping)的支持模块:
    * 将java对象映射成xml数据;
    * 比如: JAXB, Castor, XMLBeans, JiBX 和 XStream 等
  • spring-jms
* 发送和接收消息模块;
    * 用来连接数据库;(目前的猜测)

* spring4.1后, 还提供了对spring-message模块的支撑;

web组件

  • 组成
spring-web、spring-webmvc、spring-websocket、spring-webflux
  • spring-web
* 为spring提供基础web支持;
* 建立于spring核心容器之上;
* 通过Servlet或Listener来初始化IOC容器;
  • spring-mvc
* spring提供的一个web应用;
* 是一个web-servlet模块;
  • spring-websocket
* spring提供的一个websocket应用;
* websocket是一个全双工协议;
  • spring-webflux
* spring自己建立的Reactive Web架构; (响应式web)
* 不依赖servlet, 自身提供web方案;
* 特点:
    * 异步, 非阻塞, 事件驱动;
    * 扩展性非常好;

通信报文

* spring-message模块;
* 为spring提供基础报文传输应用;

集成测试

* spring-test, 提供测试支持;

集成兼容

* spring-framework-bom模块;
* 解决spring不同模块依赖版本不同问题;

各模块之间依赖关系

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值