Java SSM 框架知识点介绍
SSM 框架:是 Spring + Spring MVC + MyBatis 的缩写,这个是 SSH 之后目前比较主流的 JavaEE 企业级框架,适用于搭建各种大型的企业级应用系统。做框架和使用框架的目的,就是为了提高开发效率,执行效率次之。
Spring
Spring 定义
Spring 通常指的是 Spring Framework,它是一个开源框架。Spring 是包含众多工具方法的 IoC容器。Spring 的本质核心是创建和管理应用程序的对象,因为代码中是抽象耦合,那么把 new 具体类对象放在 Spring 框架中管理,通过 Spring 框架,根据用户的需求把对象注入到需要的地方,相当于在代码中没有使用任何具体子类的实现。
什么是容器
容器是用来容纳某种物品的基本装置。 List/Map -> 数据存储容器, Tomcat -> Web 容器
什么是 IoC
loC = Inversion of Control,表示“控制反转”。也就是说:Spring 是一个“控制反转”的容器。不在具体类中 new 对象,把 new 对象的控制权反转给第三方 Spring 容器。
Spring IOC 原理
- 启动 Spring 容器,正确加载和解析 Spring 的 xml 文件。
- 把 Spring 的 xml 中的 bean 节点的内容解析出来存储给 map 集合。
- 循环遍历 map 集合中所有的数据,取出 class 属性的值,通过反射实例化对象。
Object obj = Class.forName("包名.类名").newlnstance()
- 把创建完的对象存储到另一个 map 集合中,用 bean 的 id 作为 key,对象作为 value。
- 如果属性需要注入,Spring 框架就会帮程序员注入数据。
Spring 的核心功能
Spring 作为 IoC容器,具有最基础的功能:
- 将对象存入容器
- 从容器中取出对象
DI(依赖注入)的定义
DI 是 Dependency Injection 的缩写,翻译成中文是“依赖注入”的意思。
依赖注入是由 IoC 容器在运行期间,动态地将某种依赖关系注入到对象之中。即:从 Spring 容器中取出容器中的对象,然后把对象注入到需要的地方。
注入方式
- 构造器注入
- setter 方式注入
- 接口注入
DI 和 IoC 的区别
依赖注入(DI)和控制反转(IoC)是从不同的角度描述的同一件事。
就是指:通过引入 IoC容器,利用依赖注入的方式,实现对象之间的解耦。
IoC 是一种思想,DI 是具体的实现技术。
面向切面编程
在 Spring 框架中有个 AOP 子框架,自己创建了一套独有的表达式语言,通过这些表达式语言,可以控制业务中某些方法横切或植入新功能,Spring AOP 底层用的是动态代理,不用写动态代理代码。
Spring MVC
什么是 MVC
MVC 是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范。
- Model(模型 dao、service层):负责代码的逻辑。
- View(视图 html、jsp、css、javaScript):显示交互的页面和收集页面的数据。
- Controller(控制器 servlet):Controller 调用 View 之间的桥梁,用于控制流程。
View 的页面数据提交给 Controller,Controller 调用 Model 处理数据,把 Model 处理完的结果通过 Controller 响应给 View,View 显示处理完的数据结果。
Spring MVC 执行原理
-
用户发起 HTTP Request 请求,该请求会被提交到
DispatcherServlet
(前端控制器)。 -
由
DispatcherServlet
把请求的 URL 路径给到HandlerMapping
(处理器映射器)。 -
HandlerMapping
(处理器映射器)根据请求的 URL 路径,通过注解或者 XML 配置,寻找匹配的Handler
(处理器)信息,构造执行链并返回。 -
DispatcherServlet
将执行链返回的Handler
信息发送给HandlerAdapter
(处理器适配器)。 -
HandlerAdapter
(处理器适配器)根据Handler
信息找到并执行相应的Handler
(常称为 Controller)。 -
Handler
执行完毕后会返回给HandlerAdapter
(处理器适配器)一个ModelAndView
对象(Spring MVC 的底层对象,包括Model
数据模型和View
视图信息)。 -
HandlerAdapter
(处理器适配器)接收到ModelAndView
对象后,将其返回给DispatcherServlet
(前端控制器)。 -
DispatcherServlet
(前端控制器)接收到ModelAndView
对象后,会请求ViewResoler
(视图解析器)对视图进行解析。 -
ViewResolver
(视图解析器)根据View
信息匹配到相应的视图结果,并返回给DispatcherServlet
(前端控制器)。 -
DispatcherServlet
(前端控制器)接收到具体的View
视图后,进行视图渲染,将Model
中的模型数据填充到View
视图中的request
域,生成最终的View
(视图)。 -
视图负责将结果显示到浏览器(客户端)。
MyBatis 框架
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。
总体流程
- 加载配置并初始化
- 触发条件:加载配置文件
- 处理过程:将 SQL 的配置信息加载称为一个个 MappedStatement 对象(包括传入参数映射配置、执行的 SQL 语句、结果映射配置),存储在内存中。
- 接收调用请求
- 触发条件:调用 MyBatis 提供的 API
- 传入参数:为 SQL 的 ID 和传入参数对象
- 处理过程:将请求传递给下层的请求处理层进行处理
- 处理操作请求
- 触发条件:API 接口层传递请求过来
- 传入参数:为 SQL 的 ID 和传入参数对象
- 处理过程:
a. 根据 SQL 的 ID 查找对应的 MappedStatement 对象
b. 根据传入参数对象解析 MappedStatement 对象,得到最终要执行的 SQL 和执行传入参数
c. 获取数据库连接,根据得到的最终 SQL语句和执行传入参数到数据库执行,并得到执行结果
d. 根据 MappedStatement 对象中的结果映射配置得到的执行结果进行转换处理,并得到最终的处理结果
e. 释放连接资源
f. 返回处理结果,将最终的处理结果返回
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程