Spring簡介----概念

前言:最近學(xué)習(xí)了Spring框架披粟,就此總結(jié)下心得體會(huì)

一. Spring簡介:
  • 什么是Spring咒锻?
    Spring是一個(gè)開源的輕量級(jí)、非侵入式的控制反轉(zhuǎn)和面向切面的容器框架守屉。
    1)輕量級(jí)(Lightwight):簡而言之就是資源jar包小虫碉,Spring的核心包在文件容量上只有不到1MB的大小,而使用Spring核心包所需要的資源負(fù)擔(dān)也是很小的

    2)非侵入性(No intrusive):不需要使用框架的API去解決問題胸梆,提高程序的可維護(hù)性敦捧,可擴(kuò)展性。String提供的功能都在配置文件中完IOC成碰镜。Spring的目標(biāo)之一是實(shí)現(xiàn)非侵入性框架兢卵,希望讓應(yīng)用程序幾乎感受不到框架的存在,減低應(yīng)用程序在框架移植時(shí)的負(fù)擔(dān)绪颖,進(jìn)一步增強(qiáng)應(yīng)用程序組件的可重用性秽荤,簡單地說,使用Spring的話柠横,應(yīng)用程序中某些組件可以直接拿到另一個(gè)應(yīng)用程序或框架之中直接使用窃款。

    3)容器(Container):Spring提供容器功能,容器可以管理對(duì)象的生命周期牍氛,對(duì)象與對(duì)象之間的依賴關(guān)系晨继,我們可以使用一個(gè)配置文件(通常是XML),在上面定義好對(duì)象的名稱搬俊,如何產(chǎn)生 (Prototype方式或Singleton方式)紊扬,以及那個(gè)對(duì)象產(chǎn)生之后必須設(shè)定成為某個(gè)對(duì)象的屬性等。在啟動(dòng)容器后唉擂,所有的對(duì)象都可以直接取用餐屎,不用編寫任何一行代碼來產(chǎn)生對(duì)象,或是建立對(duì)象與對(duì)象之間的依賴關(guān)系玩祟。
    ????????換個(gè)更直白點(diǎn)的說明方式:容器是一個(gè)Java所編寫的程序腹缩,原先必須自行編寫程序以管理對(duì)象關(guān)系,現(xiàn)在容器都會(huì)自動(dòng)幫您做好。

    4)控制反轉(zhuǎn)IOC(Inversion Of Control):其更具體的另一個(gè)名詞是Dependency Injection藏鹊,中文常翻譯為“依賴注入”胜臊。即把程序中類之間的依賴關(guān)系的控制反轉(zhuǎn)給Spring容器來處理。使用Spring伙判,我們不必自己在程序代碼中維護(hù)對(duì)象的依賴關(guān)系象对,只需要在配置文件中加入設(shè)定,Spring核心容器會(huì)自動(dòng)根據(jù)配置將依賴注入指定的對(duì)象宴抚。

    *5)面向切面編程\color{red}{AOP}(\color{red}{Aspect-oriented-programming}):Spring最被人重視的另一方面是支持AOP的實(shí)現(xiàn)勒魔,然而AOP框架只是Spring支持的一個(gè)子框架,說Spring框架是AOP框架并不是一個(gè)適當(dāng)?shù)拿枋龉角藗儗?duì)于AOP的關(guān)注反映至Spring上冠绢,使得人們對(duì)于Spring的關(guān)注集中在它的AOP框架上,雖然所有誤解常潮,但也突現(xiàn)了Spring的另一個(gè)令人關(guān)注的特色弟胀。
    ????????舉個(gè)實(shí)際的栗子來說明AOP的功能之一,假設(shè)我們有個(gè)日志(Logging)的需求喊式,我們可以無須修改任何一行程序代碼孵户,就可以將這個(gè)需求加入至原先的應(yīng)用程序之中,而若我們愿意岔留,也可以在不修改任何程序的情況下夏哭,將這個(gè)日志的功能移除。
    ????????Spring的IOC容器功能與AOP功能的實(shí)現(xiàn)是其重心所在献联,在Spring下實(shí)現(xiàn)了持久層竖配,MVC Web框架以及各種企業(yè)服務(wù)的API封裝,他們的實(shí)現(xiàn)有些倚重于Spring的IOC容器與AOP功能里逆,Sping的這些框架或封裝的API功能彼此可以獨(dú)立进胯,也可以結(jié)合其它的框架方案加以替代,Spring希望提供one-stop shop的框架整合方案原押。

    6)持久層:Spring提供對(duì)持久層的整合胁镐,如對(duì)JDBC的使用加以封裝與簡化,提供事物(Transaction)管理功能班眯,對(duì)于O/R Mapping工具(Hibernate,MyBatis)的整合希停,Spring也提供了解決的方案烁巫。

    7)Web框架:Spring也提供MVC Web框架的解決方案署隘,使用Spring Web框架的好處是可以善用IOC與AOP的功能,我們甚至可以輕松地替換使用不同的View層技術(shù)亚隙,例如使用JSP,結(jié)合Tiles磁餐,使用PDF作為展現(xiàn)給使用者的畫面技術(shù)。
    ????????也可以將自己熟悉的Web框架與Spring整合,例如Struts诊霹,JSF等羞延,都可以與Spring整合,而適用于當(dāng)前所進(jìn)行的應(yīng)用程序脾还。

    8)其它企業(yè)服務(wù)的封裝:對(duì)于一些服務(wù)伴箩,例如JNDI,Mail,任務(wù)計(jì)劃(Scheduling),遠(yuǎn)程(Remoting)等鄙漏,Spring不直接提供實(shí)現(xiàn)嗤谚,而是采取抽象層方式對(duì)這些業(yè)務(wù)進(jìn)行封裝,讓這些服務(wù)在使用時(shí)可以有一致的使用模型怔蚌,并且在使用上更為簡化巩步。

~小結(jié):

????????Spring是一個(gè)開源的JavaEE框架。它作為一個(gè)優(yōu)秀的輕量級(jí)的企業(yè)應(yīng)用開發(fā)框架桦踊,可以大大簡化企業(yè)應(yīng)用開發(fā)的復(fù)雜性椅野,能夠創(chuàng)建出松耦合、易測試籍胯、易擴(kuò)展竟闪、易維護(hù)的Java應(yīng)用系統(tǒng)。

二. Spring組成:
  • Spring框架的主要優(yōu)勢之一就是其分層架構(gòu)杖狼,分層架構(gòu)允許用戶選擇使用哪一個(gè)組件瘫怜。Spring框架的分層架構(gòu),由7個(gè)定義良好的模塊組成本刽。組成Spring框架的每個(gè)模塊(組件)都可以單獨(dú)存在鲸湃,或者與其他一個(gè)或多個(gè)模塊聯(lián)合使用。其組成圖片如下:


    Spring組成

Spring AOP: 在AOP模塊中子寓,Spring對(duì)面向切面提供了豐富的支持暗挑。這個(gè)模塊是為Spring應(yīng)用系統(tǒng)開發(fā)切面的基礎(chǔ)。為了保證Spring與其他AOP框架之間的互通斜友,Spring的大部分AOP都是基于AOP Alliance的API開發(fā)的炸裆。AOP Alliance是一個(gè)開源項(xiàng)目,它的目的是促進(jìn)AOP的使用鲜屏,并且通過定義一套接口和組建來確保不同的AOP之間實(shí)現(xiàn)互通性烹看。Spring AOP模塊也引入了metadata編程。使用Spring的metadata洛史,你可以通過代碼中的注解來告訴Spring在哪里以及如何應(yīng)用切面惯殊。

Spring DAO: 編寫JDBC代碼時(shí)總是要寫一些樣板式的代碼,如:獲得連接也殖,創(chuàng)建語句土思,處理結(jié)果,最后關(guān)閉連接。Spring的JDBC和DAO模塊把這些樣板式的代碼抽象出來己儒,讓你的數(shù)據(jù)庫代碼變得簡單明了崎岂。這個(gè)模塊還建立了一個(gè)容易理解的數(shù)據(jù)庫異常層,它建立在各種數(shù)據(jù)庫錯(cuò)誤信息之上闪湾。以后就不用再去解釋那些隱晦專有的SQL錯(cuò)誤消息了冲甘。另外,這個(gè)模塊利用Spring的AOP模塊為Spring系統(tǒng)中的對(duì)象提供事務(wù)管理服務(wù)途样。

Spring ORM: Spring為那些喜歡使用ORM(Object/Relational Mapping)工具的開發(fā)人員提供了ORM模塊损合。Spring不想實(shí)現(xiàn)自己的ORM解決方案,但是它為許多流行的ORM框架做了鉤子程序娘纷,包括Hibernate嫁审,JDO和MYBATIS SQL影射。Spring的事務(wù)管理支持所有這些ORM框架以及JDBC赖晶。

Spring Web:Web上下文模塊建立在應(yīng)用上下文模塊的基礎(chǔ)之上律适,提供了適合Web系統(tǒng)的上下文。另外遏插,該模塊還支持多項(xiàng)其他面向Web的任務(wù)捂贿,如透明處理多文件上傳請求,自動(dòng)將請求參數(shù)邦定到業(yè)務(wù)對(duì)象中等胳嘲。這個(gè)模塊中還包括對(duì)Jakarta Struts的集成支持厂僧。

Spring Context: 如果說核心模塊中的BeanFactory使Spring成為容器的話,那么了牛,上下文模塊就是使Spring成為框架的原因颜屠。這個(gè)模塊擴(kuò)展了BeanFactory,添加了對(duì)I18N鹰祸,系統(tǒng)生命周期事件以及驗(yàn)證的支持甫窟。另外,這個(gè)模塊提供了很多企業(yè)級(jí)服務(wù)蛙婴,如電子郵件服務(wù)粗井,JNDI訪問,EJB集成街图,遠(yuǎn)程調(diào)用以及定時(shí)服務(wù)浇衬,并且支持與模板框架(如Velocity和FreeMarker)的集成。

Spring Core: Spring的所有模塊都是建立在核心容器之上的餐济。容器規(guī)定如何創(chuàng)建耘擂,配置和管理Bean,以及很多Spring的具體細(xì)節(jié)颤介。Spring核心容器為Spring框架提供了基礎(chǔ)功能梳星。在這個(gè)模塊中你會(huì)找到BeanFactory這個(gè)類赞赖,它是所有基于Spring框架系統(tǒng)的核心滚朵。BeanFactory采用工廠模式來實(shí)現(xiàn)IoC冤灾,它將系統(tǒng)的配置和依賴關(guān)系從代碼中獨(dú)立出來。當(dāng)遇到IoC來裝配Bean的使用辕近,我們都會(huì)討論核心模塊韵吨。

Spring Web MVC:Spring為Web系統(tǒng)提供了全功能的MVC框架。雖然Spring可以很容易地與其他MVC框架(如Struts)集成移宅,但是Spring的MVC框架利用IoC將控制邏輯和業(yè)務(wù)邏輯清晰地分離開來归粉。你可以自己聲明如何將請求參數(shù)綁定到業(yè)務(wù)對(duì)象中。
另外漏峰,Spring的MVC框架還可以使用Spring的其他服務(wù)糠悼,如信息國際化和驗(yàn)證服務(wù)。

~小結(jié):

Spring框架的組成:

  • Springcore:提供IOC對(duì)象管理功能
  • SpringAOP:面向切面編程
  • SpringORM:提供和持久層框架進(jìn)行集成的功能
  • SpringDAO:提供了數(shù)據(jù)庫連接浅乔,事務(wù)管理等功能的實(shí)現(xiàn)
  • SpringWeb:提供和Sevlet技術(shù)進(jìn)行整合的功能
  • SpringWeb MVC:是Spring的子框架
  • SpringContext:提供和企業(yè)級(jí)開發(fā)技術(shù)進(jìn)行集成的功能
三.Spring的優(yōu)點(diǎn) & 為什么使用Spring
  • 優(yōu)點(diǎn):
  1. 開源框架倔喂,開放性較高
  2. 有效地組織中間層對(duì)象
  3. 多種可選的事務(wù)處理方式
  4. 多種可選的持久層策略
  5. 多種可選的Web MVC框架策略
  6. 高度可擴(kuò)展的安全解決方案
  7. 有效的消除單例、工廠等模式的使用
  8. 將面向接口編程做到實(shí)處
  9. 使單元測試變得簡單
  10. 使EJB的使用成為一個(gè)選擇
  11. 提供了一致的數(shù)據(jù)訪問框架
  12. 只選擇你需要的
  • Why:

? 沒有使用Spring:
??????– 充斥了很多工廠類靖苇、singleton單例模式席噩;
??????– 配置也不夠集中,沒有一個(gè)統(tǒng)一的管理贤壁;
??????– 在業(yè)務(wù)層悼枢,我們一般都需要依賴Dao,我們需要自己寫一些工廠類來生成脾拆;

? 使用Spring:
??????– 它是輕量級(jí)的馒索,沒有侵入性,這是它流行的主要原因名船。
??????– 我們來裝配對(duì)象的依賴關(guān)系
??????– 把各個(gè)對(duì)象之間的依賴關(guān)系交給Spring 的IoC容器來做双揪。

PS:Spring的發(fā)展歷史及版本
??????Spring的核心代碼均來自于真實(shí)的項(xiàng)目,Rod Johnson是這個(gè)產(chǎn)品的創(chuàng)造者包帚,在《Expert One-on-One J2EE Design and Development》一書中第一次出現(xiàn)了Spring的一些核心思想渔期,是從商業(yè)項(xiàng)目開發(fā)實(shí)踐中逐步提煉出的一種架構(gòu)基調(diào)。
??????版本:2003發(fā)布渴邦,至今經(jīng)歷了1.0疯趟、1.1、1.2谋梭、2.0信峻、2.5、3.0瓮床、3.1盹舞、3.2产镐、4.0等版本,目前最新的是4.0版本踢步。

下一篇:Spring環(huán)境的搭建

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末癣亚,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子获印,更是在濱河造成了極大的恐慌述雾,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,185評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件兼丰,死亡現(xiàn)場離奇詭異玻孟,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)鳍征,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門黍翎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人艳丛,你說我怎么就攤上這事匣掸。” “怎么了质礼?”我有些...
    開封第一講書人閱讀 163,524評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵旺聚,是天一觀的道長。 經(jīng)常有香客問我眶蕉,道長砰粹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,339評(píng)論 1 293
  • 正文 為了忘掉前任造挽,我火速辦了婚禮碱璃,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘饭入。我一直安慰自己嵌器,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評(píng)論 6 391
  • 文/花漫 我一把揭開白布谐丢。 她就那樣靜靜地躺著爽航,像睡著了一般。 火紅的嫁衣襯著肌膚如雪乾忱。 梳的紋絲不亂的頭發(fā)上讥珍,一...
    開封第一講書人閱讀 51,287評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音窄瘟,去河邊找鬼衷佃。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蹄葱,可吹牛的內(nèi)容都是我干的氏义。 我是一名探鬼主播锄列,決...
    沈念sama閱讀 40,130評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼惯悠!你這毒婦竟也來了邻邮?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,985評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤吮螺,失蹤者是張志新(化名)和其女友劉穎饶囚,沒想到半個(gè)月后帕翻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鸠补,經(jīng)...
    沈念sama閱讀 45,420評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評(píng)論 3 334
  • 正文 我和宋清朗相戀三年嘀掸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了紫岩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,779評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡睬塌,死狀恐怖泉蝌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情揩晴,我是刑警寧澤勋陪,帶...
    沈念sama閱讀 35,477評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站硫兰,受9級(jí)特大地震影響诅愚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜劫映,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評(píng)論 3 328
  • 文/蒙蒙 一违孝、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧泳赋,春花似錦雌桑、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至千诬,卻和暖如春耍目,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背大渤。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評(píng)論 1 269
  • 我被黑心中介騙來泰國打工制妄, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人泵三。 一個(gè)月前我還...
    沈念sama閱讀 47,876評(píng)論 2 370
  • 正文 我出身青樓耕捞,卻偏偏與公主長得像衔掸,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子俺抽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評(píng)論 2 354

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理敞映,服務(wù)發(fā)現(xiàn),斷路器磷斧,智...
    卡卡羅2017閱讀 134,654評(píng)論 18 139
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架振愿,建立于...
    Hsinwong閱讀 22,394評(píng)論 1 92
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,807評(píng)論 6 342
  • (二)攀西篇 2018年2月18日 (正月初三) 〈一〉 路線:西昌一攀枝花 路程:...
    感懷雨季閱讀 768評(píng)論 1 7
  • 【增肌添重飲食管理方案】 管理方案(三餐兩點(diǎn)制) 一.飲食計(jì)劃管理 1.加餐 早晨加餐:大米或者糯米、豬肉末弛饭、蔬菜...
    快樂中姐閱讀 262評(píng)論 0 0