Spring應(yīng)用
- 期刊名字:電腦知識與技術(shù)
- 文件大?。?87kb
- 論文作者:王安慶
- 作者單位:文思創(chuàng)新軟件技術(shù)有限公司上海分公司
- 更新時(shí)間:2020-06-12
- 下載次數(shù):次
IsN1009-3044E-mail:xsl@cccc.net.cnComputer Knowledge and Technology電腦知識與技術(shù)http://www.dnzs.net.cnVol7. No 26. September 2011Tel:+86-551-56909635690964Spring應(yīng)用王安慶(文思創(chuàng)新軟件技術(shù)有限公司上海分公司,上海201112)摘要: Spring為企業(yè)應(yīng)用開發(fā)提供了一個(gè)輕量級的解決方案,它是一個(gè)優(yōu)秀的Wb架構(gòu)。該文簡要介紹了 Spring的概況和優(yōu)勢,重點(diǎn)介紹了 Spring的應(yīng)用,其中包括 Spring的依賴注入核心機(jī)制、面向切面編程、事物管理以及 Spring在Wh中的MVC應(yīng)用。關(guān)鍵詞: Spring;依賴注入;AOP;Mvc中圖分類號:TP311文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2011)26-6453021 Spring的概述pring是為解決企業(yè)應(yīng)用程序開發(fā)復(fù)雜性而創(chuàng)建的減小了程序開發(fā)的復(fù)雜度。 Spring不僅為開發(fā)者提供了一個(gè)優(yōu)秀的框架也為開發(fā)者提供了良好的設(shè)計(jì)和大量可供參考的源代碼。它不僅可以應(yīng)用于服務(wù)器端的開發(fā),也可應(yīng)用于客戶端的開發(fā)。 Spring也可以作為一個(gè)中間件,它可以獨(dú)立于各種服務(wù)器,甚至不需要應(yīng)用服務(wù)器的支持,也能提供服務(wù)器的功能,如聲明式事物。 Spring簡單化了JDBC的使用,它可以用來管理所有的業(yè)務(wù)對象,它的設(shè)計(jì)從底部幫助你編寫易于測試的代碼,這就大大提高了程序員開發(fā)軟件的效率。 Spring是對JEE思想進(jìn)一步改造和擴(kuò)充使其發(fā)展成更開放清晰、全面高效的開發(fā)框架2 Spring的優(yōu)勢Spring所耗費(fèi)的系統(tǒng)資源開銷是比較少的,它的很多優(yōu)勢是值得肯定。 Spring的優(yōu)勢在于以下幾個(gè)方面:低侵人式設(shè)計(jì),代碼的污染率低。它可以獨(dú)立于各種應(yīng)用服務(wù)器。 Spring的依賴注入機(jī)制降低了業(yè)務(wù)對象替換的復(fù)雜性。 Spring的高度開放性,并不強(qiáng)制應(yīng)用完全依賴于 Spring.開發(fā)者可自由選用 Spring框架的部分或全部。 Spring可以和其他框架良好的結(jié)合,如 hibernate, struts等,使得應(yīng)用程序開發(fā)吏容易3 Spring的應(yīng)用31 Spring中的基本設(shè)計(jì)思想Spring實(shí)現(xiàn)了兩種基本設(shè)計(jì)模式,即工廠模式和單態(tài)模式。Spring容器是實(shí)例化和管理所有bean的工廠。 Spring使調(diào)用者只關(guān)心被調(diào)用者必須滿足的某種規(guī)則接口),而不必關(guān)心實(shí)例的具體實(shí)現(xiàn)過程,具體的實(shí)現(xiàn)過程由ban工廠完成。調(diào)用者只關(guān)心工廠實(shí)例實(shí)現(xiàn)某個(gè)接口,是否可供自己正常調(diào)用。該模式提供各對象之間清晰的角色劃分,降低程序的耦合。Spring默認(rèn)所有bean設(shè)置成單態(tài)模式即對所有id的ban的請求都將返回同一個(gè)共享實(shí)例。單態(tài)模式大大降低Java對象創(chuàng)建和銷毀時(shí)的系統(tǒng)開銷。單態(tài)模式設(shè)計(jì)可以保證只有一個(gè)實(shí)例,并提供實(shí)例的全局訪問點(diǎn)。比如,數(shù)據(jù)庫引擎訪問點(diǎn)只能有一個(gè)。使用單態(tài)模式可避免Java類的頻繁實(shí)例化,讓相同類的全部實(shí)例共享同一內(nèi)存區(qū)。32 Spring的核心機(jī)制趣 Spring框架提供了很多功能這些功能能夠很好的組合在一起就是因?yàn)樗褂昧丝刂品崔D(zhuǎn)技術(shù)??刂品崔D(zhuǎn)就是由容器來控制中各個(gè)類之間的關(guān)系,控制權(quán)由代碼轉(zhuǎn)到外部容器而不是傳統(tǒng)中的直接有程序代碼操控。原先的程序設(shè)計(jì)中,我們通常是通過創(chuàng)建一個(gè)類對象來調(diào)用這個(gè)類中的方法,這樣在程序中就有大量創(chuàng)建類對象的代碼。這些代碼要不僅需要程序員手工編寫,也不容易管理。 Spring的控制反轉(zhuǎn)技術(shù)就很好的解決了這個(gè)問題。所有的對象全部交給 Spring容器管理,當(dāng)程序需要對應(yīng)的類對象時(shí),我們就直接去 Spring容器中獲取。當(dāng)采用控制反轉(zhuǎn)技術(shù)時(shí),對象就會將對某些特性及方面的控制轉(zhuǎn)到框架或環(huán)境。對象創(chuàng)建和對象定位的職責(zé)從類轉(zhuǎn)移到框架,這種依賴關(guān)系就是依賴注入。依賴注入是控制反轉(zhuǎn)一個(gè)具體實(shí)例。依賴注人是 Spring的核心機(jī)制。依賴注入讓bean和bean之間以配置文件組織在一起,而不是以硬編碼的方式耦合在一起。依賴注入的目標(biāo)是為了提升組件重用的概率,為系統(tǒng)搭建一個(gè)靈活、可擴(kuò)展的平臺。33 Spring對AOP的支持AOP(Aspect Oriented Programming),即面向切面的程序設(shè)計(jì),也稱為面向方面的程序設(shè)計(jì)。 Spring中提供內(nèi)置AOP支持。AOP為開發(fā)者提供了一種基于關(guān)注點(diǎn)進(jìn)行軟件設(shè)計(jì)的新思想,是對0oP( Object Oriented Programming)面向?qū)ο缶幊棠P偷囊环N擴(kuò)展。利用AOP編程,開發(fā)人員可以將復(fù)雜的系統(tǒng)看作多個(gè)關(guān)注點(diǎn)組合在一起實(shí)現(xiàn)的。比如:一個(gè)系統(tǒng)通常包括業(yè)務(wù)邏輯、日志、安全等方面的關(guān)注點(diǎn),開發(fā)人員可以分別實(shí)現(xiàn)系統(tǒng)所需要的業(yè)務(wù)邏輯,最后將這些實(shí)現(xiàn)組合在一起,構(gòu)建完整的系統(tǒng)。中國煤化工CNMHG收稿日期:2011-08-01作者簡介:王安慶(1982-),男,河南人,主要從事軟件工程師工作。謝媛媛.:.··x軟件計(jì)開發(fā)··6453Computer Knowledge and Technology電腦知識與技術(shù)第7卷第26期(2011年9月)簡單的說,AOP將那些與業(yè)務(wù)無關(guān)卻為業(yè)務(wù)模塊所共同調(diào)用的邏輯或責(zé)任封裝起來便于減少系統(tǒng)的重復(fù)代碼降低模塊間的耦合度,方便將來的可維護(hù)性和可操作性。比如,日志散布在所有對象的層次中,而它卻與散布對象的核心功能無關(guān)。34 Spring的事務(wù)管理Spring封裝了所有對事務(wù)處理的功能包括事務(wù)的回滾、提交等。這大大減少了程序員的代碼量,也有利于事務(wù)的管理。讀數(shù)據(jù)不需要為其指定事務(wù),而數(shù)據(jù)的插入修改刪除就需要事務(wù)管理了。對于依賴容器的參數(shù)化事務(wù)管理 Spring起到很大的作用。 Spring的事務(wù)管理是基于動(dòng)態(tài)AOP,AOP技術(shù)實(shí)現(xiàn)的事務(wù)管理實(shí)質(zhì)就是:在方法執(zhí)行前后進(jìn)行攔截,然后在目標(biāo)方法開始之前創(chuàng)建并加人事務(wù)管理,執(zhí)行完目標(biāo)方法后根據(jù)執(zhí)行情況進(jìn)行提交或回滾事務(wù)。 Spring可以將 Java Class納入事務(wù)管理。通過Spring,我們實(shí)現(xiàn)簡單的事務(wù)配置,就可以為某個(gè)類的某個(gè)方法制定事務(wù)管理機(jī)制。 Spring事務(wù)管理并不依賴特定的事務(wù)資源。 Spring的事務(wù)管理支持JDBC等多種事務(wù)資源,這為我們提供了多種選擇。3 5 Spring Web中的MVc應(yīng)用MVC是 Model-vew- Controller(模型-視圖-控制器)的簡稱。它把一個(gè)應(yīng)用的輸入、處理、輸出流程按照 Model, view controller的方式分成三層(模型層、視圖層控制器層)。視圖用來顯示和用戶交互的貞面模型用來表示企業(yè)數(shù)據(jù)和業(yè)務(wù)邏輯控制器是負(fù)責(zé)頁面的跳轉(zhuǎn),并且從客戶端接受請求執(zhí)行相應(yīng)的業(yè)務(wù)邏輯然后把響應(yīng)結(jié)果輸出到頁面上。MVC的好處就是將業(yè)務(wù)層和視圖層分離,三層各司其職,一旦那一層發(fā)生變化,只需要修改相應(yīng)層中的代碼。Spring框架提供了構(gòu)建Web應(yīng)用程序的全功能MvC模塊。 Spring的 Web mvc框架是圍繞分發(fā)器 DispatcherServlet設(shè)計(jì)的。Spring MVC會把所有的請求都提交給 DispatcherServlet,當(dāng) DispatcherServlet接收到請求時(shí),它會查找適當(dāng)?shù)奶幚沓绦騺硖幚碚埱?。處理程序映?Handler Mapping負(fù)責(zé)為請求返回一個(gè)適當(dāng)?shù)奶幚沓绦颉?DispatcherServlet查詢一個(gè)或多個(gè)處理程序映射Handler Mapping, HandlerMapping將web請求映射到正確的處理程序( handler),也就是找到處理請求的控制器 Controller( Spring MVC中用來處理web請求最典型的處理程序就是控制器 Controller)) DispatcherServlet:將請求提交到目標(biāo)控制器 Controller, Controller進(jìn)行業(yè)務(wù)處理后,會返回一↑ ModelAndview(模型和視圖的基本類)。 DispatcherServlet查詢一個(gè)或多↑ View Resolver視圖解析器,找到 ModelAndⅤiew對象指定的視圖對象。視圖對象負(fù)責(zé)將模型屬性返回給客戶端,視圖對象的任務(wù)就是將模型屬性展示給用戶。MvC實(shí)現(xiàn)的可擴(kuò)展性很強(qiáng), Spring框架可以很容易的和 Struts, Hibernate結(jié)合起來 Spring充當(dāng)了管理容器的角色。 Hibernate用來做持久層,方便了與數(shù)據(jù)庫的交互。 Struts用來做應(yīng)用層,負(fù)責(zé)調(diào)用業(yè)務(wù)邏輯層。 Spring框架就可以管理 Struts中的 Action對象和業(yè)務(wù)邏輯類,實(shí)現(xiàn)了層與層之間的分離程序的執(zhí)行效率就更高維護(hù)更方便。4小結(jié)Spring是一個(gè)開源的項(xiàng)目,它廣泛應(yīng)用于大中型項(xiàng)目。 Spring提供了一個(gè)靈活和可擴(kuò)展的MVC實(shí)現(xiàn),它在依賴注入、事務(wù)管理等方面都很優(yōu)秀。 Spring在項(xiàng)目中的應(yīng)用,使應(yīng)用程序更簡單,更容易測試,更容易管理,有利于為開發(fā)者提供簡單、有效的解決方案參考文獻(xiàn):[]李剛 Spring2.0寶典M]北京:電子工業(yè)出版社,200[2]Lads, Davison D, Devijver S,etl深人解析 Spring MVC與 Web FlowM]北京:人民郵電出版社2008[3 Tate B A, Gehtland J. Spring程序高手秘笈[M南京:東南大學(xué)出版社,2007.中國煤化工CNMHG645分?jǐn)?shù)艙件量計(jì)開…本欄目任編:謝媛媛
-
C4烯烴制丙烯催化劑 2020-06-12
-
煤基聚乙醇酸技術(shù)進(jìn)展 2020-06-12
-
生物質(zhì)能的應(yīng)用工程 2020-06-12
-
我國甲醇工業(yè)現(xiàn)狀 2020-06-12
-
石油化工設(shè)備腐蝕與防護(hù)參考書十本免費(fèi)下載,絕版珍藏 2020-06-12
-
四噴嘴水煤漿氣化爐工業(yè)應(yīng)用情況簡介 2020-06-12
-
Lurgi和ICI低壓甲醇合成工藝比較 2020-06-12
-
甲醇制芳烴研究進(jìn)展 2020-06-12
-
精甲醇及MTO級甲醇精餾工藝技術(shù)進(jìn)展 2020-06-12
