資源描述:
《高中信息技術(shù)教學(xué)論文 Spring框架的事務(wù)管理應(yīng)用分析》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、Spring框架的事務(wù)管理應(yīng)用分析摘要介紹了J2EE平臺(tái)上JavaWeb開(kāi)發(fā)的Spring框架的原理和特性,對(duì)其事務(wù)管理方面的應(yīng)用進(jìn)行了分析。 關(guān)鍵詞Spring;J2EE;控制反轉(zhuǎn);事務(wù)處理 引言 在軟件開(kāi)發(fā)中出現(xiàn)過(guò)各種各樣的框架,開(kāi)源軟件的興起,使得各種各樣的框架紛紛出現(xiàn),例如,Apache組織下就擁有諸多的框架類產(chǎn)品??蚣芫褪且唤M協(xié)同工作的類,它們?yōu)樘囟愋偷能浖?gòu)筑了一個(gè)可重用的設(shè)計(jì)。然而,傳統(tǒng)的框架使得應(yīng)用程序組件過(guò)分依賴于框架中的類,這種耦合度的提高降低了組件的復(fù)用性。Spring框架的出現(xiàn),使得組件之間更松散的耦合成為了
2、可能?! pring框架簡(jiǎn)介 Spring框架是一個(gè)2003年2月才出現(xiàn)的開(kāi)源項(xiàng)目,該開(kāi)源項(xiàng)目起源自RodJohnson在2002年末出版的《ExpertOne-on-OneJ2EEDesignandDevelopment》一書中的基礎(chǔ)性代碼。在該書中,RodJohnson倡導(dǎo)J2EE實(shí)用主義的設(shè)計(jì)思想,而Spring框架正是這一思想的更全面和具體的實(shí)現(xiàn)。Spring框架由一個(gè)容器,一個(gè)配置和組織組件的框架,和一組內(nèi)置的為事務(wù)、持久化和Web用戶接口提供的服務(wù)組成。作為一種輕量級(jí)的J2EE框架,Spring提供了一種有效的方式來(lái)建立和組
3、織J2EE應(yīng)用程序?! ?、Spring特性 IoC(InversionofControl;控制反轉(zhuǎn));又稱DI(DependencyInjection;依賴注入);是面向?qū)ο箢I(lǐng)域新興的編程思想;也是Spring的精髓所在。簡(jiǎn)單地說(shuō);IoC就是指程序之間的關(guān)系由容器來(lái)控制;而不是傳統(tǒng)實(shí)現(xiàn)中由程序代碼直接操控。這也就是所謂“控制反轉(zhuǎn)”的概念所在:控制權(quán)由應(yīng)用代碼轉(zhuǎn)到外部容器,控制權(quán)的轉(zhuǎn)移,也就是所謂的反轉(zhuǎn)。IoC將控制創(chuàng)建的職責(zé)搬進(jìn)了框架中;并把它從應(yīng)用代碼脫離開(kāi)來(lái)。當(dāng)使用Spring的IoC容器時(shí)只需指出組件需要的對(duì)象,在運(yùn)行時(shí)Sprin
4、g的IoC容器會(huì)根據(jù)XML配置數(shù)據(jù)提供給它?! pringIoC,借助于依賴注入設(shè)計(jì)模式,使得開(kāi)發(fā)者不用理會(huì)對(duì)象自身的生命周期極其關(guān)系,而且能夠改善開(kāi)發(fā)者對(duì)模式的使用。對(duì)于一個(gè)對(duì)象的管理不是什么困難,難就難在對(duì)整個(gè)對(duì)象群的管理。依賴注入可以讓容器管理對(duì)象,即“Don’tcallme,Iwillcallyou”。這樣對(duì)象本身的生命周期以及對(duì)象之間的關(guān)系就不再讓開(kāi)發(fā)者費(fèi)神了。 SpringAOP,借助于Spring實(shí)現(xiàn)攔截器,開(kāi)發(fā)者能夠?qū)崿F(xiàn)以聲名方式使用企業(yè)級(jí)服務(wù),比如安全性服務(wù)、事務(wù)服務(wù)。AOP合理的補(bǔ)充了OOP,借助于SpringAOP
5、,開(kāi)發(fā)者能夠高效的使用J2EE服務(wù)。 Spring服務(wù)抽象,借助于各種J2EEAPI抽象,使得開(kāi)發(fā)者能夠一致地使用J2EE技術(shù),而不管具體是使用什么J2EEAPI,借助于Spring服務(wù)抽象,使代碼大大減少,滿足“更少代碼,更少BUG”的軟件設(shè)計(jì)原則。 SpringIoC+SpringAOP+Spring服務(wù)抽象,一起形成Spring,這樣一個(gè)有機(jī)體,使構(gòu)建輕量級(jí)J2EE成為可能。 Spring提供的事務(wù)管理 Spring提供的事務(wù)管理可以分為兩類:編程式的和聲明式的。編程式的,比較靈活,但是代碼量大,存在重復(fù)的代碼比較多;聲明式的
6、比編程式的更靈活方便?! ?、傳統(tǒng)使用JDBC的事務(wù)管理 以往使用JDBC進(jìn)行數(shù)據(jù)操作,使用DataSource,從數(shù)據(jù)源中得到Connection,我們知道數(shù)據(jù)源是線程安全的,而連接不是線程安全的,所以對(duì)每個(gè)請(qǐng)求都是從數(shù)據(jù)源中重新取出一個(gè)連接。一般的數(shù)據(jù)源由容器進(jìn)行管理,包括連接池。例如TOMCAT,WEBSPHERE,WEBLOGIC等這些J2EE商業(yè)容器都提供了這個(gè)功能?! ∫酝奈覀兪褂肑DBC在寫代碼時(shí),事務(wù)管理可能會(huì)是這樣:Connectionconn=null;try{ conn=DBConnectionFactory.ge
7、tConnection; conn.setAutoCommit(false); //dosomething conn.commit();//committranscation}catch(Exceptione){ conn.rollback();}finally{ try{ conn.close(); }catch(SQLExceptionse){//dosth.} //closeResultSet,PreparedStatement,Connection //notice:MaybeocurrExceptionwhenuclosers,
8、pstmt,conn} 按照以往的思路來(lái)寫代碼,代碼量比較長(zhǎng),而且容易疏忽,忘掉一些try/catch,引發(fā)一些異常無(wú)法catch,雖然有時(shí)候我們會(huì)寫DBTool類,來(lái)關(guān)閉這些