Spring Framework 系统架构总览图
Spring Framework的模块依赖关系图
Spring Framework各个模块功能说明
Spring核心模块
模块名称 | 主要功能 |
---|---|
Spring-core | 依赖注入IOC和DI的基本实现 |
Spring-beans | Bean工厂与Bean的装配 |
Spring-context | 定义基础的Spring的Context上下文即IOC容器 |
Spring-context-support | 对Spring IOC容器的扩展支持,以及IOC的子容器 |
Spring-context-indexer | Spring的类管理组件和Classpath扫描 |
Spring-expression | Spring表达式语言 |
Spring 切面编程相关
模块名称 | 主要功能 |
---|---|
Spring-Aop | 面向切面编程模块 |
Spring-Aspecrts | 集成AspectJ |
Spring-Instrument | 动态的Class Loading模块 |
Spring数据访问集成
名称 | 主要功能 |
---|---|
Spring-JDBC | Spring提供的JDBC抽象框架主要实现 模块,用于简化JDBC操作 |
Spring-Tx | Spring JDBC事务实现模块 |
Spring-ORM | 主要集成Hibernate,Java Persistence API(JPA)和Java Data Objects JDO |
Spring-OXM | 将java对象映射成XML数据,或者将XML数据映射成java对 |
Spring-JMS | Java Messaging Service.能够发送和接收信息 |
Spring Web相关的组件
名称 | 主要功能 |
---|---|
Spring-Web | spring-web提供了最基础Web支持,主要建立于核心容器之上,通过Servlet或者Listeners来初始化IOC容器 |
Spring-WebMVC | 实现了Spring MVC(model-view-Controller)的Web应用 |
Spring-WebSocket | 主要是与Web前端的全双工通讯的协议 |
Spring-WebFlux | 一个新的非堵塞函数式Reactive Web框架,可以用来建立异步的,非阻塞,事件驱动的服务 |
Spring通信报文相关
模块名称 | 主要功能 |
---|---|
Spring——Messaging | 主要职责是为Spring框架集成一些基础的报文传输应用 |
Spring测试相关
名称 | 主要功能 |
---|---|
Spring-test | 主要为程序测试提供 |
Spring集成兼容
名称 | 主要功能 |
---|---|
Spring-Framework-BOM | BOM of Materials解决Spring的不同模块的依赖版本问题 |
实现基本功能Spring的思路
-
配置阶段
- 配置Web.xml DisppatcherServler
- 设定init-param contextConfigLoacation=classpath:application.xml
- 设定url-pattern /*
- 配置Annotation @Controller @Service @Auotwirted @RequestMapper
-
初始化阶段
- 调用init方法 加载配置文件
- IOC容器初始化
Map<String,Object>
- 扫描相关的类 scan-package=‘你的包’
- 创建实例并保存到容器 通过反射机制将类实例化放到IOC容器
IOC
- 进行DI操作 扫描IOC容器的实例,给没有复制的属性自动复制
DI
- 初始化HandMapping 将URL和一个Method一对一映射关联
MVC
-
运行阶段
- 调用
doPost()
方法/doGet()
方法 Web容器调用doPost/doGet
,获得request
/response
- 匹配
HandMapping
从request
对象中获得用户输入的url
,找到其对应的Method
- 反射调用
method.invoker()
利用反射调用方法并返回结果 respone.getWrite().write
将结果输出到浏览器
- 调用
说明
本文章为作者读书笔记及感悟,其中参考了《spring5核心原理与30个类手写实战》以及互联网上的内容。如有错误,请评论或者私聊我,欢迎探讨技术问题 。