從零學習Spring(一)

框架介紹

今天我們便踏上Spring框架的學習之路,熟悉此公衆號的讀者知道,公衆號正在連載關於MyBatis,Spring MVC,Spring Boot框架的教程。如果需要學習的讀者可以翻查歷史記錄或者點擊下方鏈接:

從零學習Spring MVC框架

從零學習MyBatis框架

從零學習Spring Boot框架

框架的學習順序建議最後學Spring Boot。而SSM框架的學習順序不做要求,因爲按照系統獨立的方式寫的教程,先學習哪一個並無大礙。但最後學習Spring Boot框架還是建議的,有了SSM框架基礎,接觸Spring Boot框架比較簡單。

Spring框架系列的文章會依次講解Spring概念、控制反轉、依賴注入、AOP、動態代理、事務等相關知識。這篇文章介紹什麼是Spring?

對沒有接觸過Spring框架的朋友來說,下方的概念和名詞聽完會一頭霧水,這並無大礙。等到後續文章講解、配上代碼案例後,相信就會理解它們的概念了。

Spring是一個開源框架,Spring是於2003 年興起的一個輕量級的Java 開發框架,方便解耦,簡化開發。由Rod Johnson 在其著作Expert One-On-One J2EEDevelopment and Design中闡述的部分理念和原型衍生而來。它是爲了解決企業應用開發的複雜性而創建的。

框架的主要優勢之一就是其分層架構,分層架構允許使用者選擇使用哪一個組件,同時爲 J2EE 應用程序開發提供集成的框架。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。關於EJB是什麼這裏不展開介紹,感興趣的讀者可以移步:https://www.cnblogs.com/strugglion/p/6027318.html。

然而,Spring的用途不僅限於服務器端的開發。從簡單性、可測試性和鬆耦合的角度而言,任何Java應用都可以從Spring中受益。Spring的核心是控制反轉(IoC)和麪向切面(AOP)。簡單來說,Spring是一個分層的JavaSE/EE full-stack(一站式)輕量級開源框架。

輕量級:與EJB對比,依賴資源少,銷燬的資源少。

分層:一站式,每一個層都提供的解決方案

Web層:Struts,Spring-MVC

Service層:Spring(其實Spring框架是橫跨三層)

Dao層:Hibernate,Mybatis,JdbcTemplate

Spring核心

Spring的核心是控制反轉(IoC)和麪向切面(AOP)

Spring優點

方便解耦,簡化開發 (高內聚低耦合)

Spring就是一個大工廠(容器),可以將所有對象創建和依賴關係維護,交給Spring管理,spring工廠是用於生成bean。

AOP編程的支持

Spring提供面向切面編程,可以方便的實現對程序進行權限攔截、運行監控等功能。AOP其實只是OOP的補充而已。OOP從橫向上區分出一個個的類來,而AOP則從縱向上向對象中加入特定的代碼。有了AOP,OOP變得立體了。從技術上來說,AOP基本上是通過代理機制實現的。

聲明式事務的支持

只需要通過配置就可以完成對事務的管理,而無需手動編程,事務管理保證了用戶的每一次操作都是可靠的,即便出現了異常的訪問情況,也不至於破壞後臺數據的完整性。

就像銀行的自助取款機,通常都能正常爲客戶服務,但是也難免遇到操作過程中機器突然出故障的情況,此時,事務就必須確保出故障前對賬戶的操作不生效,就像用戶剛纔完全沒有使用過取款機一樣,以保證用戶和銀行的利益都不受損失。

方便程序的測試

Spring對Junit4支持,可以通過註解方便的測試Spring程序

方便集成各種優秀框架

Spring不排斥各種優秀的開源框架,其內部提供了對各種優秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持降低JavaEE API的使用難度

Spring 對JavaEE開發中非常難用的一些API(JDBC、JavaMail、遠程調用等),都提供了封裝,使這些API應用難度大大降低。

Spring體系結構

核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要組件是 BeanFactory,它是工廠模式的實現。BeanFactory 使用控制反轉 (IOC) 模式將應用程序的配置和依賴性規範與實際的應用程序代碼分開

Spring 上下文:Spring 上下文是一個配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企業服務,例如 EJB、電子郵件、國際化、校驗和調度功能。

Spring AOP:通過配置管理特性,Spring AOP 模塊直接將面向方面的編程功能集成到了 Spring 框架中。簡單來說就是在不影響核心業務代碼的基礎上,通過AOP來爲程序添加性能監控、日誌處理等額外功能。其原理是JDK的動態代理,講到AOP的時候我們會用代碼實現。

Spring DAO:JDBC DAO 抽象層提供了有意義的異常層次結構,可用該結構來管理異常處理和不同數據庫供應商拋出的錯誤消息。異常層次結構簡化了錯誤處理,並且極大地降低了需要編寫的異常代碼數量(例如打開和關閉連接)。Spring DAO 的面向 JDBC 的異常遵從通用的 DAO 異常層次結構。

Spring ORM:Spring 框架插入了若干個 ORM 框架,從而提供了 ORM 的對象關係工具,其中包括 Hibernate 和MyBatis。具體可以移步 MyBatis框架教程「入門起步」這篇文章,就可瞭解是什麼原因催生了MyBatis此類ORM框架。

Spring Web 模塊:Web 上下文模塊建立在應用程序上下文模塊之上,爲基於 Web 的應用程序提供了上下文。所以,Spring 框架支持與 Jakarta Struts 的集成。Web 模塊還簡化了處理多部分請求以及將請求參數綁定到域對象的工作。

Spring MVC 框架:MVC 框架是一個全功能的構建 Web 應用程序的 MVC 實現。具體的相關知識只需要點擊此鏈接即可:從零學習Spring MVC框架「環境搭建和MVC架構」.

總結

總結來說,在 MVC架構 中,Spring框架其實是橫跨三層的一個容器,在Dao層你可以選擇Mybatis或者hibernate,在控制層你可以選擇Spring MVC或者Struts。但是企業大部分使用SSM框架這種單體應用架構,SSH框架遺留在一些老項目中。現在火的不行的微服務架構,Spring Boot作爲微服務的基礎框架,也是值得大家學習的。

如果喜歡我們的文章,歡迎推薦給自己的朋友。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章