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 原理

  1. 启动 Spring 容器,正确加载和解析 Spring 的 xml 文件。
  2. 把 Spring 的 xml 中的 bean 节点的内容解析出来存储给 map 集合。
  3. 循环遍历 map 集合中所有的数据,取出 class 属性的值,通过反射实例化对象。
    Object obj = Class.forName("包名.类名").newlnstance()
    
  4. 把创建完的对象存储到另一个 map 集合中,用 bean 的 id 作为 key,对象作为 value。
  5. 如果属性需要注入,Spring 框架就会帮程序员注入数据。

Spring 的核心功能

Spring 作为 IoC容器,具有最基础的功能:

  • 将对象存入容器
  • 从容器中取出对象

DI(依赖注入)的定义

DI 是 Dependency Injection 的缩写,翻译成中文是“依赖注入”的意思。

依赖注入是由 IoC 容器在运行期间,动态地将某种依赖关系注入到对象之中。即:从 Spring 容器中取出容器中的对象,然后把对象注入到需要的地方。

注入方式

  1. 构造器注入
  2. setter 方式注入
  3. 接口注入

DI 和 IoC 的区别

image

依赖注入(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 执行原理

  1. 用户发起 HTTP Request 请求,该请求会被提交到 DispatcherServlet(前端控制器)。

  2. DispatcherServlet 把请求的 URL 路径给到 HandlerMapping(处理器映射器)。

  3. HandlerMapping(处理器映射器)根据请求的 URL 路径,通过注解或者 XML 配置,寻找匹配的 Handler(处理器)信息,构造执行链并返回。

  4. DispatcherServlet 将执行链返回的 Handler 信息发送给 HandlerAdapter(处理器适配器)。

  5. HandlerAdapter(处理器适配器)根据 Handler 信息找到并执行相应的 Handler(常称为 Controller)。

  6. Handler 执行完毕后会返回给 HandlerAdapter(处理器适配器)一个 ModelAndView 对象(Spring MVC 的底层对象,包括 Model 数据模型和 View 视图信息)。

  7. HandlerAdapter(处理器适配器)接收到 ModelAndView 对象后,将其返回给 DispatcherServlet(前端控制器)。

  8. DispatcherServlet(前端控制器)接收到 ModelAndView 对象后,会请求 ViewResoler(视图解析器)对视图进行解析。

  9. ViewResolver(视图解析器)根据 View 信息匹配到相应的视图结果,并返回给 DispatcherServlet(前端控制器)。

  10. DispatcherServlet(前端控制器)接收到具体的 View 视图后,进行视图渲染,将 Model 中的模型数据填充到 View 视图中的 request 域,生成最终的 View(视图)。

  11. 视图负责将结果显示到浏览器(客户端)。

MyBatis 框架

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。

总体流程

  1. 加载配置并初始化
  • 触发条件:加载配置文件
  • 处理过程:将 SQL 的配置信息加载称为一个个 MappedStatement 对象(包括传入参数映射配置、执行的 SQL 语句、结果映射配置),存储在内存中。
  1. 接收调用请求
  • 触发条件:调用 MyBatis 提供的 API
  • 传入参数:为 SQL 的 ID 和传入参数对象
  • 处理过程:将请求传递给下层的请求处理层进行处理
  1. 处理操作请求
  • 触发条件:API 接口层传递请求过来
  • 传入参数:为 SQL 的 ID 和传入参数对象
  • 处理过程:
    a. 根据 SQL 的 ID 查找对应的 MappedStatement 对象
    b. 根据传入参数对象解析 MappedStatement 对象,得到最终要执行的 SQL 和执行传入参数
    c. 获取数据库连接,根据得到的最终 SQL语句和执行传入参数到数据库执行,并得到执行结果
    d. 根据 MappedStatement 对象中的结果映射配置得到的执行结果进行转换处理,并得到最终的处理结果
    e. 释放连接资源
    f. 返回处理结果,将最终的处理结果返回
posted @   ~小白白~  阅读(56)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示