SSM 框架核心知识详解(Spring + SpringMVC + MyBatis)

🌱 第一部分:Spring 核心原理与使用

1. 什么是 Spring

Spring 是一个开源的 Java 企业级开发框架,旨在简化 Java 企业应用程序开发。它核心思想是控制反转(IoC)和面向切面编程(AOP),使开发者能更轻松地创建松耦合、可测试和易维护的应用程序。

它提供了对 Bean 的生命周期管理、依赖注入、声明式事务管理、AOP 支持等功能,并与多种其他框架(如 Hibernate、MyBatis、Struts)高度兼容,形成了完整的企业级应用解决方案。

2. 什么是 SpringMVC

SpringMVC 是 Spring 框架中的一个模块,是一个基于 Servlet 的 Web 框架,遵循 MVC(Model-View-Controller)设计模式。它用于构建 Web 应用的表现层,负责处理请求和返回响应,核心处理器是 DispatcherServlet,它协调整个请求流程。

3. 什么是 MyBatis

MyBatis 是一款持久层框架,通过 XML 或注解将 SQL 语句和 Java 方法关联起来,使开发者能够直接控制 SQL 的执行过程和映射规则,具有灵活、高效的特点。

它避免了 Hibernate 的全自动 ORM 的复杂性,允许开发者编写原生 SQL,使 SQL 更加可控、易调试。

4. Spring 的核心

  • IoC 容器:管理对象的生命周期与依赖关系。

  • AOP 支持:通过切面简化日志、安全、事务等横切关注点。

  • 容器配置方式多样:支持 XML、注解、Java 配置类。

  • 事务管理:声明式和编程式事务支持。

  • 模块化架构:包括 Beans、Context、Core、AOP、JDBC 等模块。

5. Spring 的优点

  • 解耦合:IoC 机制有效降低模块间耦合。

  • 高扩展性:提供大量扩展点与标准接口。

  • 易测试:可通过依赖注入替换真实对象。

  • 广泛整合:与主流框架、库无缝集成。

  • 轻量级:按需加载模块,避免臃肿。

6. @Autowired@Resource 区别

特性@Autowired@Resource
所属标准SpringJSR-250 标准
注入方式默认按类型(可配合 @Qualifier默认按名称(可使用 name 属性)
适用范围Spring 内部推荐Java 通用注解
依赖检查可设置 required=false不支持

7. Spring 的生命周期(Bean 生命周期)

  1. 加载 Bean 的定义信息(XML、注解、JavaConfig)

  2. 实例化 Bean(反射)

  3. 设置属性(依赖注入)

  4. PostProcessor 后置处理

  5. Bean 准备就绪使用

  6. 容器销毁时调用销毁方法(如 @PreDestroy 或 destroy-method)

8. 依赖注入的方式

  • 构造器注入:通过构造方法传入依赖(推荐用于不可变对象)。

  • Setter 注入:通过属性 setter 方法注入。

  • 字段注入:使用 @Autowired 注解直接注入(不推荐用于测试)。

9. Spring 中 Bean 是单例的吗?

默认是单例(singleton)。Spring 容器中 Bean 默认作用域是单例,也可配置为:

  • prototype:每次获取都新建实例。

  • request:每个 HTTP 请求一个实例(Web 项目)。

  • session:每个会话一个实例。

  • application:每个 ServletContext 一个实例。

  • websocket:每个 WebSocket 一个实例。

10. 四大注解区别

注解描述所在层次
@Component标识为普通组件(通用)任意层
@Controller标识控制层组件(处理请求)表现层
@Service标识服务层组件(业务逻辑)业务逻辑层
@Repository标识持久层组件(数据访问)DAO 层

11. 控制反转与依赖注入

  • 控制反转(IoC):将对象创建和管理的控制权交给容器,程序不再主动创建对象,而是由容器注入。

  • 依赖注入(DI):容器在创建对象时,将它依赖的资源注入进来。

区别:IoC 是一种思想,DI 是实现 IoC 的技术手段。

🔁 第二部分:AOP 与常用注解

12. Spring AOP 术语

  • Aspect(切面):定义横切逻辑的模块。

  • JoinPoint(连接点):程序执行过程中可插入切面的点,如方法调用。

  • Pointcut(切入点):定义哪些 JoinPoint 被织入。

  • Advice(通知):切面在连接点执行的动作(如前置、后置)。

  • Weaving(织入):将切面逻辑加入到目标对象的过程。

13. 通知的类型

  • @Before:方法前执行

  • @After:方法后执行(无论成功或异常)

  • @AfterReturning:方法成功返回后执行

  • @AfterThrowing:方法抛出异常后执行

  • @Around:环绕整个方法执行(最强大)

14. 注解作用说明

  • @Configuration:标识配置类,等价于 XML 配置文件

  • @Bean:定义 Bean 方法,注册到容器中

  • @Controller:标识控制器类,用于处理请求

  • @Value:注入配置文件中的值

🌐 第三部分:SpringMVC 深入

15. MVC 模式

MVC 是一种设计模式:

  • Model:数据模型(如实体类、Service)

  • View:视图(如 JSP、Thymeleaf、HTML)

  • Controller:控制器,处理请求、调用服务、返回视图

16. SpringMVC 工作原理

  1. 用户请求由前端控制器 DispatcherServlet 接收

  2. 查找 HandlerMapping 获取对应 Controller

  3. 由 HandlerAdapter 调用处理器方法

  4. 方法执行返回 ModelAndView

  5. 视图解析器解析视图名

  6. 响应渲染返回给用户

17. SpringMVC 优点

  • 请求处理流程清晰、可扩展性强

  • 注解简化配置

  • 支持 RESTful URL

  • 与 Spring 紧密集成

18. 常用注解作用

  • @RequestMapping:映射 URL 到方法

  • @ResponseBody:返回 JSON 或 XML

  • @PathVariable:获取路径参数

  • @RequestParam:获取请求参数

💾 第四部分:MyBatis 专项

19. BeanFactory vs ApplicationContext

特性BeanFactoryApplicationContext
加载方式延迟加载预加载单例 Bean
国际化支持
事件机制不支持支持
推荐使用场景轻量应用企业级开发推荐

20. 数据库事务的 ACID 特性

  1. 原子性(Atomicity):操作要么全部成功,要么全部失败。

  2. 一致性(Consistency):事务执行前后,数据保持一致。

  3. 隔离性(Isolation):并发事务之间互不干扰。

  4. 持久性(Durability):事务提交后修改永久保存。

21. MyBatis 优点

  • SQL 可控,便于优化

  • 映射灵活,可自定义规则

  • 轻量,易与 Spring 集成

  • 支持动态 SQL

22. 常用标签说明

  • <select>:查询语句

  • <insert>:插入语句

  • <update>:更新语句

  • <delete>:删除语句

  • <resultMap>:复杂结果映射

  • <if><where><foreach>:动态 SQL 控制

23. #{}${} 区别

表达式描述安全性
#{}占位符,预编译传参安全(防 SQL 注入)
${}直接拼接字符串不安全(易被注入)

24. 实现模糊查询的方式

<!-- XML 映射方式 -->
<select id="findByName" resultType="User">SELECT * FROM user WHERE name LIKE CONCAT('%', #{name}, '%')
</select>
// Mapper 接口方式
List<User> findByName(String name);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/web/82550.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于 Alpine 定制单功能用途(kiosk)电脑

前言 故事回到 7 年前, 在网上冲浪的时候发现了一篇介绍使用 Ubuntu 打造 kiosk 单功能用途电脑的文章, 挺好玩的, 就翻译了一下并比葫芦画瓢先后用了 CentOS 7, ArchLinux 进行了实现. 历史文章: 翻译 - 使用Ubutnu14.04和Chrome打造单功能用途电脑(大屏展示电脑) 使用CentOS…

【机器学习及深度学习】机器学习模型的误差:偏差、方差及噪声

机器学习模型的误差分析 V1.0机器学习模型的衡量准则概念引入机器学习模型误差分析误差出现的原因及消除 V1.0 机器学习模型的衡量准则 衡量机器学习模型的好坏可以考虑以下几个方面&#xff1a; 偏差&#xff08;Bias&#xff09;&#xff1a; 在充分训练的情况下&#xff0…

混沌映射(Chaotic Map)

一.定义 混沌映射是指一类具有混沌行为的离散时间非线性动力系统&#xff0c;通常由递推公式定义。其数学形式为 &#xff0c;其中 f 是非线性函数&#xff0c;θ 为参数。它们以简单的数学规则生成复杂的、看似随机的轨迹&#xff0c;是非线性动力学和混沌理论的重要研究对象…

多群组部署

相关概念 星形拓扑和并行多组 如下图&#xff0c;星形组网拓扑和并行多组组网拓扑是区块链应用中使用较广泛的两种组网方式。 星形拓扑&#xff1a;中心机构节点同时属于多个群组&#xff0c;运行多家机构应用&#xff0c;其他每家机构属于不同群组&#xff0c;运行各自应用…

基于vue3-elemenyui的动态列案例

本案例主要是实现数据模型的解析以及实现el-table的动态列加载。 1.数据结构 公司A\B\C\测试1&#xff0c;是列&#xff0c;功能-url&#xff0c;是行数据&#xff0c;其中功能x是行头。 this.rawData [{companyName: "公司A",rpWebShows: [{ "功能1": &…

Kerberos面试内容整理-Kerberos 与 LDAP/Active Directory 的集成

Kerberos 通常不会单独存在于企业环境中,而是与目录服务相结合以提供完整的身份管理方案。其中,Active Directory (AD) 是 Kerberos 集成应用的典型代表。Active Directory 是微软的目录服务,实现了 LDAP(轻量级目录访问协议)目录和 Kerberos 认证的融合。在 AD 域控制器上…

Oracle DG库控制文件IO错误导致宕机的应急处理

Oracle DG库控制文件IO错误导致宕机的应急处理 事故现场偷天换日棋差一招事故现场 一套Oracle 19c DG环境的备库宕机。 根据告警时间检查实例宕机时间点附近的alert日志有如下重要信息: 2025-05-25T23:34:10.705385+08:00 KCF: read, write or open error, block=0x3377ee …

《前端面试题:前端盒模型》

前端盒模型完全指南&#xff1a;从原理到面试实战 &#x1f381; 端午快乐&#xff01; 各位前端小伙伴&#xff0c;端午节快乐&#xff01;&#x1f96e; 在这个粽叶飘香的时节&#xff0c;愿你的代码如龙舟般一往无前&#xff0c;bug 如咸蛋黄般被完美包裹&#xff01;今天我…

BERT:让AI真正“读懂”语言的革命

BERT&#xff1a;让AI真正“读懂”语言的革命 ——图解谷歌神作《BERT: Pre-training of Deep Bidirectional Transformers》 2018年&#xff0c;谷歌AI团队扔出一篇核弹级论文&#xff0c;引爆了整个NLP领域。这个叫BERT的模型在11项任务中屠榜&#xff0c;甚至超越人类表现…

爬虫入门:从基础到实战全攻略

&#x1f9e0; 一、爬虫基础概念 1.1 爬虫定义 爬虫&#xff08;Web Crawler&#xff09;是模拟浏览器行为&#xff0c;自动向服务器发送请求并获取响应数据的一种程序。主要用于从网页中提取结构化数据&#xff0c;供后续分析、展示或存储使用。 1.2 爬虫特点 数据碎片化&…

uni-app学习笔记二十一--pages.json中tabBar设置底部菜单项和图标

如果应用是一个多 tab 应用&#xff0c;可以通过 tabBar 配置项指定一级导航栏&#xff0c;以及 tab 切换时显示的对应页。 在 pages.json 中提供 tabBar 配置&#xff0c;不仅仅是为了方便快速开发导航&#xff0c;更重要的是在App和小程序端提升性能。在这两个平台&#xff…

行业分析---小米汽车2025第一季度财报

1 背景 最近几年是新能源汽车的淘汰赛&#xff0c;前短时间比亚迪再次开始了降价&#xff0c;导致一片上市车企的股价大跌&#xff0c;足见车圈现在的敏感度。因此笔者会一直跟踪新势力车企的财报状况&#xff0c;对之前财报分析感兴趣的读者朋友可以参考以下博客&#xff1a;…

Python 解释器安装全攻略(适用于 Linux / Windows / macOS)

目录 一、Windows安装Python解释器1.1 下载并安装Python解释1.2 测试安装是否成功1.3 设置pip的国内镜像------永久配置 二、macOS安装Python解释器三、Linux下安装Python解释器3.1 Rocky8.10/Rocky9.5安装Python解释器3.2 Ubuntu2204/Ubuntu2404安装Python解释器3.3 设置pip的…

考研系列—操作系统:冲刺笔记(1-3章)

目录 第一章 计算机系统概述 1.基本概念 2.内核态和用户态 3.中断(外中断)、异常(内中断-与当前执行的) 4.系统调用 5.操作系统引导程序 2021年真题: 6.操作系统结构 大纲新增 (1)分层结构 (2)模块化 (3)外核 7.虚拟机 第二章 进程管理 1.画作业运行的顺序和甘…

监控 100 台服务器磁盘内存CPU利用率

监控 100 台服务器磁盘,内存&#xff0c;CPU利用率脚本 以下是一个优化后的监控脚本&#xff0c;用于同时监控100台服务器的磁盘、内存和CPU利用率&#xff0c;并支持并发执行以提高效率&#xff1a; #!/bin/bash # 服务器监控脚本 - 支持并发获取100台服务器系统指标 # 功能…

[5-02-04].第01节:Jmeter环境搭建:

JMeter笔记大纲 Jmeter依赖于JDK&#xff0c;所以必须确保当前计算机上已经安装了JDK&#xff0c;并且配置了环境变量 一、JMeter概述&#xff1a; 1.1.JMeter是什么&#xff1a; JMeter是Appache组织使用java开发的一款测试工具 可以用于对服务器、网络或对象模拟巨大的负载…

【兽医处方专用软件】佳易王兽医电子处方软件:高效智能的宠物诊疗管理方案

一、软件概述与核心优势 &#xff08;一&#xff09;试用版获取方式 资源下载路径&#xff1a;进入博主头像主页第一篇文章末尾&#xff0c;点击卡片按钮&#xff1b;或访问左上角博客主页&#xff0c;通过右侧按钮获取详细资料。 说明&#xff1a;下载文件为压缩包&#xff…

MapReduce(期末速成版)

起初在B站看3分钟的速成视频&#xff0c;感觉很多细节没听懂。 具体例子解析(文件内容去重) 对于两个输入文件&#xff0c;即文件A 和文件B&#xff0c;请编写MapReduce 程序&#xff0c;对两个文件进行合并&#xff0c;并剔除 其中重复的内容&#xff0c;得到一个新的输出文件…

Java高级 | 【实验四】Springboot 获取前端数据与返回Json数据

隶属文章&#xff1a; Java高级 | &#xff08;二十二&#xff09;Java常用类库-CSDN博客 系列文章&#xff1a; Java高级 | 【实验一】Spring Boot安装及测试 最新-CSDN博客 Java高级 | 【实验二】Springboot 控制器类相关注解知识-CSDN博客 Java高级 | 【实验三】Springboot …

从零打造AI面试系统全栈开发

&#x1f916; AI面试系统开发完整教程 &#x1f4cb; 项目概述 本教程将带你从零开始构建一个完整的AI面试系统&#xff0c;包含前端、后端、AI集成和部署的全流程。 源码地址 技术栈 前端: React TypeScript Vite Vaadin Components后端: Spring Boot Spring Securi…