Spring 簡(jiǎn)介
1. 前言
“Spring 真的那么有用嗎?”
大家好,今天我們開始一個(gè)新專題 — Spring。
首先 Spring 可謂是大名鼎鼎,如雷貫耳。而關(guān)于 Spring 的文章、書籍、教程更是數(shù)不勝數(shù)。可以說 Spring 貫穿我們的整個(gè)職業(yè)生涯,是框架界的常青樹。那么我們這個(gè)專題專門來聊一聊: 到底 Spring 是什么,它的特點(diǎn)優(yōu)勢(shì)是什么,我們項(xiàng)目的開發(fā)為什么選擇 Spring,它能幫助我們解決哪些問題?
帶著疑問,開始我們的專題。
2. 課程進(jìn)入
2.1 Spring 概述
先搞清楚 Spring 的概念:
官網(wǎng)定義:
Spring 框架為任何類型的部署平臺(tái)上的基于 Java 的現(xiàn)代企業(yè)應(yīng)用程序提供了全面的編程和配置模型。
Spring 的一個(gè)關(guān)鍵元素是在應(yīng)用程序級(jí)別的基礎(chǔ)架構(gòu)支持:Spring 專注于企業(yè)應(yīng)用程序的 “管道”,以便團(tuán)隊(duì)可以專注于應(yīng)用程序級(jí)別的業(yè)務(wù)邏輯,而不必與特定的部署環(huán)境建立不必要的聯(lián)系。
慕課解釋:
簡(jiǎn)單來說:Spring 是一個(gè)免費(fèi)開源框架,為了簡(jiǎn)化企業(yè)級(jí)項(xiàng)目開發(fā),提供全面的開發(fā)部署解決方案。
疑問導(dǎo)出:
看到這兒,我們明白了一件事:Spring 是幫助我們開發(fā)項(xiàng)目的,使用起來很方便。
那么問題來了:Spring 為了簡(jiǎn)化項(xiàng)目開發(fā)到底做了哪些事情?
3. 知識(shí)入門
3.1 Spring 核心功能
Spring 到底如何簡(jiǎn)化我們的項(xiàng)目開發(fā)呢?首先,來了解下 Spring 的體系結(jié)構(gòu)。
3.2 Spring 的體系結(jié)構(gòu)介紹
結(jié)構(gòu)圖闡釋:
- 左上角勾畫出負(fù)責(zé)持久層的部分,是 Spring 對(duì)數(shù)據(jù)持久化,事務(wù)管理,支持的功能框架。大家聽過的 SpringDataJpa 就是其中的一種;
- 右上角勾畫出是負(fù)責(zé)表現(xiàn)層的部分,是 Spring 對(duì)于表現(xiàn)層數(shù)據(jù)的處理部分的支持,比如:大家聽說過的 SpirngMVC 就是其中的一種;
- 最底部的負(fù)責(zé)測(cè)試的部分 是 Spring 對(duì)于項(xiàng)目的測(cè)試 提供了完整的一個(gè)測(cè)試環(huán)境支持;
- 而中間的兩部分 是我們大家常常俗稱的 Spring 框架。
疑問導(dǎo)出:
看到這里大家可能會(huì)明白一點(diǎn), Spring 其實(shí)是一個(gè) “大家族”。從表現(xiàn)層、業(yè)務(wù)層、持久層,它都有對(duì)應(yīng)的支持,而我們?cè)诳蚣軐W(xué)習(xí)的部分其實(shí)主要是使用了它中間的兩個(gè)部分的核心功能。
那么,Spring 核心功能到底是什么呢?
3.3 Spring 的核心功能
大家對(duì)于使用 Spring 框架開發(fā)項(xiàng)目已經(jīng)司空見慣了… 但是對(duì)于它的功能或者作用,描述出來總是差點(diǎn)什么,那么現(xiàn)在咱們?cè)敿?xì)聊一聊它的核心功能。
核心功能:
- 控制反轉(zhuǎn)(IoC): 簡(jiǎn)單理解 IoC 是一種設(shè)計(jì)模式,將實(shí)例化對(duì)象的控制權(quán) 由手動(dòng)的 new 變成了 Spring 框架通過反射機(jī)制實(shí)例化;
- 依賴注入(DI): 首先理解依賴,程序運(yùn)行的需要可以稱之為依賴。由于 Spring 框架通過反射技術(shù)實(shí)例化了對(duì)象,并將對(duì)象的實(shí)例存入在容器進(jìn)行管理。那么如果一個(gè)類中的屬性為某個(gè)其余的類,屬性無需手動(dòng)賦值,通過 spring 的配置文件,或者 Spring 提供的注解,通過 spring 框架可以實(shí)現(xiàn)直接注入屬性;
- 面向切面編程 (AOP): 何謂切面,切面是數(shù)學(xué)中的一個(gè)概念,表示只有一個(gè)點(diǎn)接觸到球體的一個(gè)平面稱呼為切面,而接觸點(diǎn)稱呼為切點(diǎn)。那么在 Spring 中,切面編程指的就是在程序運(yùn)行某個(gè)方法的時(shí)候,不修改原始執(zhí)行代碼邏輯,由程序動(dòng)態(tài)地執(zhí)行某些額外的功能,對(duì)原有的方法做增強(qiáng),這就叫做面向切面編程,那個(gè)被監(jiān)測(cè)的執(zhí)行方法,稱呼為切入點(diǎn)。
知識(shí)小結(jié):
Spring 是分層的 Java SE/EE 應(yīng)用 輕量級(jí)開源框架,以 IoC(Inverse of Control:控制反轉(zhuǎn))和 AOP(Aspect Oriented Programming:面向切面編程)為內(nèi)核,提供了展現(xiàn)層 Spring MVC 和持久層 Spring JDBC 以及業(yè)務(wù)層事務(wù)管理等眾多的企業(yè)級(jí)應(yīng)用技術(shù),還能整合開源世界眾多 著名的第三方框架和類庫, 是使用最多的 Java EE 企業(yè)應(yīng)用開源框架。
使用 Spring 的意義在于:對(duì)于 bean 對(duì)象的實(shí)例管理更加方便,代碼編寫更加優(yōu)雅,降低代碼的耦合性,提升代碼的擴(kuò)展性。
4. Spring 的優(yōu)勢(shì)
Spring 的概念和功能了解以后,下面談?wù)勊膬?yōu)勢(shì)在哪
- Spring 簡(jiǎn)化項(xiàng)目開發(fā) : Spring 靈活全面的擴(kuò)展功能,使我們開發(fā)項(xiàng)目如魚得水 。通過 Spring 提供的 IoC 容器,可以將對(duì)象間的依賴關(guān)系交由 Spring 進(jìn)行控制,避免硬編碼所造成的過度程序耦合。用戶也不必再為單例模式類、屬性文件解析等這些很底層的需求編寫代碼,可以更專注于上層的應(yīng)用;
- Spring 的面向切面編程 :Spirng 框架的 AOP 面向切面編程,極大地提高了程序的擴(kuò)展性,支持開發(fā)人員實(shí)現(xiàn)對(duì)程序的自定義增強(qiáng)。同時(shí)可以方便地使用 Spring 提供的事務(wù)管理;
- 面向接口編程: 面向接口編程 降低代碼的耦合性,同時(shí)也提高了代碼的擴(kuò)展性;
- 測(cè)試方便:對(duì)于測(cè)試的支持 有很多的組件實(shí)現(xiàn);
- 方便集成第三方框架 Spring 可以降低各種框架的使用難度,提供了對(duì)各種優(yōu)秀框架(Struts、Hibernate、Hessian、Quartz 等)的直接支持。
5. 學(xué)習(xí)基礎(chǔ)
- 學(xué)習(xí)這門課程,首先學(xué)會(huì) java 基礎(chǔ)語法、面向?qū)ο蟮恼n程;
- 了解常用的設(shè)計(jì)模式,比如:工廠模式 單例模式 代理模式;
- 理解反射,并可以應(yīng)用于實(shí)踐;
- 可以熟練使用 maven 工具。
6. 小結(jié)
本章節(jié)主要對(duì)于 Spring 框架做了入門介紹,通過本章節(jié)的學(xué)習(xí),我們應(yīng)該知道以下幾點(diǎn):
- Spring 框架的概念;
- Spring 框架的意義;
- Spring 框架的體系結(jié)構(gòu);
- Spring 框架的核心功能;
- Spring 框架的優(yōu)勢(shì);
- Spring 框架學(xué)習(xí)的一些小要求。