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
繁體地址,請注明出處:http://hk.pswp.cn/web/82550.shtml
英文地址,請注明出處:http://en.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…