SSM整理呐~

本文详细介绍了Spring框架的核心特性,包括IOC和AOP,以及SpringMVC的运行原理和组件,如DispatcherServlet、HandlerMapping、HandlerAdapter等。接着探讨了MyBatis的持久层框架优势,一级缓存和二级缓存的使用,并说明了开启和配置二级缓存的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Spring

Spring框架是开源Java平台,是轻量级的框架;
主要特征:

  • 轻量:从大小与开销两方面而言Spring都是轻量级;
  • 非侵入式:Spring应用的对象不依赖于特定的Spring类;
  • IOC(控制反转):将对象的使用权交由spring管理,容器负责对于对象的生命周期进行管理,使用者要使用主动将对象传递给使用者,达到松耦合目的;
    Spring IOC
  • AOP(面向切面):spring支持面向切面编程,被应用逻辑和系统服务分开,例如:事务、日志等;(AOP是通过预编译方式或者是运行期期间动态代理实现功能扩展而不用修改源代码,通过AOP技术,实现一种通用的逻辑解耦,解决一些系统层面的问题,如日志、事务、权限等,从而实现高可用的可重用性和可维护性)
  • 容器:包含并管理应用对象的配置和生命周期;
  • 框架:可以将简单组件配置,组合成复杂的应用。

spring优势: 方便解耦、简化开发;对AOP的支持、对声明式事务的支持、方便集成各种优秀框架。
spring体系结构:
在这里插入图片描述
核心容器:
核心容器由spring-core,spring-beans,spring-context,spring-context-support和spring-expression(SpEL,Spring表达式语言,Spring Expression Language)等模块组成,它们的细节如下:在这里插入图片描述
数据访问/集成:
数据访问/集成层包括JDBC,ORM,OXM,JMS和事务处理模块,它们的细节如下:
在这里插入图片描述
Web页面:
Web层由Web、Web-MVC,Web-Socket 和 Web-Portlet 组成,它们的细节如下:
在这里插入图片描述
其他模块:
还有其他一些重要的模块,像AOP、Aspects、Instrumentation,Web 和测试模块,它们的细节如下:
在这里插入图片描述
Spring家族:
在这里插入图片描述

二、SpringMVC

SpringMVC是一种基于Java,实现了Web MVC设计模式,请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将Web层进行职责解耦。基于请求驱动指的就是使用请求-响应模式,框架的目的就是帮助我们简化开发,SpringMVC也是要简化我们日常Web开发。

  • M 代表 模型(Model) 模型就是数据,是dao、bean;
  • V 代表 试图 (View) 视图就是网页,JSP,用来展示模型中的数据;
  • C 代表 控制器 (Controller) 控制器的作用就是把不同的数据(Model),显示在不同的视图(View)上,Servlet扮演的就是这样的角色。
    在这里插入图片描述

SpringMVC是属于Spring的一个模块;
SpringMVC和Spring无需通过中间整合层进行整合;
Spring是一个基于MVC的Web框架。

SpringMVC运行原理

在这里插入图片描述
具体流程:

  • 第一步:用户发起请求request到前端控制器DispatcherServlet
  • 第二步:前端控制器请求处理映射器HandlerMapping查找Handler,可以根据注解、XML进行查找
  • 第三步:处理映射器向前端控制器返回映射结果处理器映射链HandlerExecutionChain对象,包含一个Handler处理器对象、多个HandlerInterceptor拦截器的对象
  • 第四步:前端控制器请求处理器适配器HandlerAdapter请求执行Handler
  • 第五步:处理器适配器执行Handler
  • 第六步:处理器执行完返回给适配器ModelAndView对象,ModelAndView是SpringMVC一个底层的对象,包含View和Model,Model部分是业务对象返回的模型数据,View部分为逻辑视图名
  • 第七步:处理器适配器返回给前端控制器ModelAndView对象(包含模型数据、逻辑视图名)
  • 第八步:前端控制器请求视图解析器ViewResolver解析视图,视图解析器将把逻辑视图名解析为具体的View(jsp…)
  • 第九步:视图解析器向前端控制器返回view
  • 第十步:前端控制器进行视图渲染,视图渲染将模型数据(ModelAndView对象)填充到request域
  • 第十一步:前端控制器向用户响应结果
SpringMVC各组件介绍
前端控制器DispatcherServlet

【不需要开发,由框架提供】
SpringMVC的入口函数,接收请求,响应请求,相当于转发器,有了DispatcherServlet减少其他组件之间的耦合度,用户请求到达前端控制器,相当于MVC中的C(Controller),是整个流程控制的中心,由它调用其他组件处理用户请求,降低组件键的耦合度

处理器映射器HandlerMapping

【不需要开发,由框架提供】
根据URL查找Handler,HandlerMapping负责根据用户请求找到Handler处理器(Controller),SpringMVC中提供了不同的映射器实现的映射方式,比如:配置文件方式,实现接口方式,注解方法

处理器适配器HandlerAdapter

【不需要开发,由框架提供】
按照特定规则(HandlerAdapter要求的规则)去执行Handler通过HandlerAdapter对处理器进行执行,是适配器模式的应用,通过扩展适配器可以对更多的类型的处理器进行执行

处理器Handler

【需要开发人员开发】
真正执行Handler的是处理器,处理器是对具体的用户请求进行处理,由于Handler涉及到具体的用户业务请求,所以一般情况下是需要开发人员根据业务需求开发Handler

视图解析器ViewResolver

【不需要开发,由框架提供】
进行视图解析,根据逻辑视图名解析成真正的视图view,View Resolver负责将处理结果生成View视图,View Resolver根据逻辑视图名解析成真正物理视图名即具体的以页面地址,在生成View视图对象,最后对View视图进行渲染将处理结果通过页面展示给用户

视图View

【需要开发人员开发】
View是一个接口,实现类支持不同的View类型(jsp\freeemark\pdf)
SpringMVC框架提供了很多View视图类型,包括jspView、freeMarkView、pdfView等,一般情况下需要通过页面标签或者页面模板技术将模型数据展示给用户,需要开发人员根据业务开发具体的页面

三、mybatis

mybatis的前身是ibatis,是Apache旗下开源的数据库持久层框架;
mybatis是一款优秀的持久层框架,它支持自定义SQL,存储过程以及高级映射;MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

MyBatis 的使用步骤:

  • 配置MyBatis 的全局配置文件(数据源、mapper映射)
  • 创建SQLSessionFactory对象
  • 通过SQLSessionFactory创建SQLSession对象
  • 通过SQLSession来操作数据库CRUD操作
  • 关闭SQLSession资源

SQLSessionFactory:会话工厂
SQLSessionFactory是用来创建会话的:SQLSession
会话工厂是用来读取全局配置文件,通过SQLSessionFactoryBuilder类来创建
通过读取配置文件来创建该实例,一般配置文件读取一次即可,可以将SQLSessionFactory设置为单例

SQLSession:会话
对数据库CRUD操作都是SQLSession来操作的
SQLSession是线程不安全的,将其设置为方法的局部变量
一级缓存是基于SQLSession来创建的,mybatis中默认开启一级缓存

MyBatis中默认定义了两级缓存,分别是一级缓存和二级缓存。

  • (1)默认情况下,只有一级缓存(SqlSession级别的缓存,也称为本地缓存)开启。
  • (2)二级缓存需要手动开启和配置,二级缓存是基于namespace级别的缓存。
  • (3)为了提高扩展性,MyBatis定义了缓存接口Cache,我们可以通过实现Cache接口来自定义二级缓存。
一级缓存介绍

一级缓存(local cache),即本地缓存,作用域默认为SqlSession。当Session flush 或close 后,该Session中所有Cache将被清空。
本地缓存不能被关闭,但可以调用clearCache()来清空本地缓存,或者改变缓存的作用域。
mybatis3.1之后,可以配置本地缓存的作用域,在mybatis.xml中配置。
一级缓存失效的四种情况

  • 不同的SqlSession对应不同的一级缓存。
  • 同一个SqlSession但是查询条件不同。
  • 同一个SqlSession的两次查询期间执行了增删改操作。
  • 同一个SqlSession的两次查询期间手动清空了缓存。
二级缓存介绍

二级缓存(second level cache),是全局作用域缓存。
二级缓存默认不开启,需要手动配置。
MyBatis提供二级缓存的接口以及实现,实现二级缓存要求被查询的JavaBean实现Serializable接口。
二级缓存在SqlSession关闭或提交之后才会生效。

二级缓存使用步骤
  • 在mybatis全局配置文件中开启二级缓存 < setting name=“cacheEnabled” value=“true”/>。
  • 在需要使用二级缓存的mapper映射文件中使用< cache />标签配置缓存。
  • 被查询的JavaBean需要实现Serializable接口。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值