Spring漫談1 - 簡介

寫在Spring之前

目前Spring體系已經(jīng)發(fā)展到spring boot绪抛,單純的spring core已經(jīng)稍顯過時像屋,但是作為一個經(jīng)典和奠基怕犁,不得不說學習Spring core讓你知道Spring體系的過去,也更能讓你理解未來己莺。

在此感謝整理開發(fā)文檔的作者奏甫,本文參考和引用如下:
spring core tutorial:https://www.tutorialspoint.com/spring/index.htm
spring 教程w3c:https://www.w3cschool.cn/wkspring/

spring framework 是一個開源的java平臺,它提供了豐富的構(gòu)架凌受,用以支撐非常簡單和快速地開發(fā)出一個健壯的Java應(yīng)用阵子。它最初是由 Rod Johnson 編寫的,并且于 2003 年 6 月首次在 Apache 2.0 許可下發(fā)布胜蛉。本片教程是基于spring framework 4.1.6版本挠进,2015/03 發(fā)布。大部分內(nèi)容具有向后兼容性誊册,還有少數(shù)內(nèi)容可能隨高級版本變動领突,具體請查看version change。

適用對象

本教程是為需要詳細了解 Spring 框架的體系結(jié)構(gòu)和實際應(yīng)用的 Java 程序員設(shè)計的解虱。本教程將帶你達到中級的專業(yè)知識水平攘须,而你可以將自己提升至更高層次的專業(yè)知識水平。

準備知識

在進行本教程之前,你應(yīng)該對 Java 編程語言有一個很好的了解于宙。對 IDE 的基本了解也是必須的浮驳,因為所有的示例都可用 Eclipse或者Intellij idea IDE 進行編譯的。

Q&A

https://www.tutorialspoint.com/spring/spring_questions_answers.htm

概述

Spring 是最受歡迎的企業(yè)級 Java 應(yīng)用程序開發(fā)框架捞魁,數(shù)以百萬的來自世界各地的開發(fā)人員使用 Spring 框架來創(chuàng)建性能好至会、易于測試、可重用的代碼谱俭。

Spring 框架是一個開源的 Java 平臺奉件,它最初是由 Rod Johnson 編寫的,并且于 2003 年 6 月首次在 Apache 2.0 許可下發(fā)布昆著。

Spring 是輕量級的框架县貌,其基礎(chǔ)版本只有 2 MB 左右的大小。

Spring 框架的核心特性是可以用于開發(fā)任何 Java 應(yīng)用程序凑懂,但是在 Java EE 平臺上構(gòu)建 web 應(yīng)用程序是需要擴展的煤痕。 Spring 框架的目標是使 J2EE 開發(fā)變得更容易使用,通過啟用基于 POJO 編程模型來促進良好的編程實踐接谨。

使用 Spring 框架的好處

下面列出的是使用 Spring 框架主要的好處:

  • Spring 可以使開發(fā)人員使用 POJOs 開發(fā)企業(yè)級的應(yīng)用程序摆碉。只使用 POJOs 的好處是你不需要一個 EJB 容器產(chǎn)品,比如一個應(yīng)用程序服務(wù)器脓豪,但是你可以選擇使用一個健壯的 servlet 容器巷帝,比如 Tomcat 或者一些商業(yè)產(chǎn)品。

  • Spring 在一個單元模式中是有組織的扫夜。即使包和類的數(shù)量非常大楞泼,你只要擔心你需要的,而其它的就可以忽略了历谍。

  • Spring 不會讓你白費力氣做重復(fù)工作现拒,它真正的利用了一些現(xiàn)有的技術(shù),像ORM 框架望侈、日志框架印蔬、JEE、Quartz 和 JDK 計時器脱衙,其他視圖技術(shù)侥猬。

  • 測試一個用 Spring 編寫的應(yīng)用程序很容易,因為環(huán)境相關(guān)的代碼被移動到這個框架中捐韩。此外退唠,通過使用 JavaBean-style POJOs,它在使用依賴注入注入測試數(shù)據(jù)時變得更容易荤胁。

  • Spring 的 web 框架是一個設(shè)計良好的 web MVC 框架瞧预,它為比如 Structs 或者其他工程上的或者不怎么受歡迎的 web 框架提供了一個很好的供替代的選擇。MVC模式導(dǎo)致應(yīng)用程序的不同方面(輸入邏輯,業(yè)務(wù)邏輯和UI邏輯)分離垢油,同時提供這些元素之間的松散耦合盆驹。

    • 模型(Model)封裝了應(yīng)用程序數(shù)據(jù),通常它們將由POJO類組成滩愁。
    • 視圖(View)負責渲染模型數(shù)據(jù)躯喇,一般來說它生成客戶端瀏覽器可以解釋HTML輸出。
    • 控制器(Controller)負責處理用戶請求并構(gòu)建適當?shù)哪P拖跬鳎⑵鋫鬟f給視圖進行渲染廉丽。
  • Spring 對JavaEE開發(fā)中非常難用的一些API(JDBC、JavaMail妻味、遠程調(diào)用等)正压,都提供了封裝,使這些API應(yīng)用難度大大降低弧可。

  • 輕量級的 IOC 容器往往是輕量級的蔑匣,例如,特別是當與 EJB 容器相比的時候棕诵。這有利于在內(nèi)存和 CPU 資源有限的計算機上開發(fā)和部署應(yīng)用程序。

  • Spring提供了一致的事務(wù)管理接口凿将,可向下擴展到(使用一個單一的數(shù)據(jù)庫校套,例如)本地事務(wù)并擴展到全局事務(wù)(例如,使用 JTA)牧抵。

依賴注入(DI)

Spring 最認同的技術(shù)是控制反轉(zhuǎn)的依賴注入(DI)模式笛匙。控制反轉(zhuǎn)(IoC)是一個通用的概念犀变,它可以用許多不同的方式去表達妹孙,依賴注入僅僅是控制反轉(zhuǎn)的一個具體的例子。

當編寫一個復(fù)雜的 Java 應(yīng)用程序時获枝,應(yīng)用程序類應(yīng)該盡可能的獨立于其他的 Java 類來增加這些類可重用可能性蠢正,當進行單元測試時,可以使它們獨立于其他類進行測試省店。依賴注入(或者有時被稱為配線)有助于將這些類粘合在一起嚣崭,并且在同一時間讓它們保持獨立。

到底什么是依賴注入懦傍?讓我們將這兩個詞分開來看一看雹舀。這里將依賴關(guān)系部分轉(zhuǎn)化為兩個類之間的關(guān)聯(lián)。例如粗俱,類 A 依賴于類 B∷涤埽現(xiàn)在,讓我們看一看第二部分,注入签财。所有這一切都意味著類 B 將通過 IoC 被注入到類 A 中串慰。

依賴注入可以以向構(gòu)造函數(shù)傳遞參數(shù)的方式發(fā)生,或者通過使用 setter 方法 post-construction荠卷。由于依賴注入是 Spring 框架的核心部分模庐,所以我將在一個單獨的章節(jié)中利用很好的例子去解釋這一概念。

面向方面的程序設(shè)計(AOP):

Spring 框架的一個關(guān)鍵組件是面向方面的程序設(shè)計(AOP)框架油宜。一個程序中跨越多個點的功能被稱為橫切關(guān)注點掂碱,這些橫切關(guān)注點在概念上獨立于應(yīng)用程序的業(yè)務(wù)邏輯。有各種各樣常見的很好的關(guān)于方面的例子慎冤,比如日志記錄疼燥、聲明性事務(wù)、安全性蚁堤,和緩存等等醉者。

在 OOP 中模塊化的關(guān)鍵單元是類,而在 AOP 中模塊化的關(guān)鍵單元是方面披诗。AOP 幫助你將橫切關(guān)注點從它們所影響的對象中分離出來撬即,然而依賴注入幫助你將你的應(yīng)用程序?qū)ο髲谋舜酥蟹蛛x出來。

Spring 框架的 AOP 模塊提供了面向方面的程序設(shè)計實現(xiàn)呈队,可以定義諸如方法攔截器和切入點等剥槐,從而使實現(xiàn)功能的代碼徹底的解耦出來。使用源碼級的元數(shù)據(jù)宪摧,可以用類似于.Net屬性的方式合并行為信息到代碼中粒竖。Spring AOP

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市几于,隨后出現(xiàn)的幾起案子蕊苗,更是在濱河造成了極大的恐慌,老刑警劉巖沿彭,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件朽砰,死亡現(xiàn)場離奇詭異,居然都是意外死亡膝蜈,警方通過查閱死者的電腦和手機锅移,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來饱搏,“玉大人非剃,你說我怎么就攤上這事⊥品校” “怎么了备绽?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵券坞,是天一觀的道長。 經(jīng)常有香客問我肺素,道長恨锚,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任倍靡,我火速辦了婚禮猴伶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘塌西。我一直安慰自己他挎,他們只是感情好,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布捡需。 她就那樣靜靜地躺著办桨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪站辉。 梳的紋絲不亂的頭發(fā)上呢撞,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天,我揣著相機與錄音饰剥,去河邊找鬼殊霞。 笑死,一個胖子當著我的面吹牛汰蓉,可吹牛的內(nèi)容都是我干的脓鹃。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼古沥,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了娇跟?” 一聲冷哼從身側(cè)響起岩齿,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎苞俘,沒想到半個月后盹沈,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡吃谣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年乞封,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片岗憋。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡肃晚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出仔戈,到底是詐尸還是另有隱情关串,我是刑警寧澤拧廊,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站晋修,受9級特大地震影響吧碾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜墓卦,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一倦春、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧落剪,春花似錦睁本、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至脑又,卻和暖如春暮胧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背问麸。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工往衷, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人严卖。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓席舍,卻偏偏與公主長得像,于是被迫代替她去往敵國和親哮笆。 傳聞我的和親對象是個殘疾皇子来颤,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容