自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Spring框架的事務(wù)管理應(yīng)用分析

開發(fā) 后端
本文介紹Spring框架,Spring事務(wù)管理的應(yīng)用,以及Spring特性的介紹。

Spring框架簡(jiǎn)介

Spring框架是一個(gè)2003年2月才出現(xiàn)的開源項(xiàng)目,該開源項(xiàng)目起源自Rod Johnson在2002年末出版的《Expert One-on-One J2EE Design and Development》一書中的基礎(chǔ)性代碼。在該書中,Rod Johnson倡導(dǎo)J2EE實(shí)用主義的設(shè)計(jì)思想,而Spring框架正是這一思想的更全面和具體的實(shí)現(xiàn)。Spring框架由一個(gè)容器,一個(gè)配置和組織組件的框架,和一組內(nèi)置的為事務(wù)、持久化和Web用戶接口提供的服務(wù)組成。作為一種輕量級(jí)的J2EE框架,Spring提供了一種有效的方式來建立和組織 J2EE應(yīng)用程序。

Spring特性

IoC(Inversion of Control;控制反轉(zhuǎn));又稱DI(Dependency Injection;依賴注入);是面向?qū)ο箢I(lǐng)域新興的編程思想;也是Spring的精髓所在。簡(jiǎn)單地說;IoC就是指程序之間的關(guān)系由容器來控制;而不是傳統(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)用代碼脫離開來。當(dāng)使用Spring的IoC容器時(shí)只需指出組件需要的對(duì)象,在運(yùn)行時(shí)Spring的IoC容器會(huì)根據(jù) XML配置數(shù)據(jù)提供給它。

Spring IoC,借助于依賴注入設(shè)計(jì)模式,使得開發(fā)者不用理會(huì)對(duì)象自身的生命周期及其關(guān)系,而且能夠改善開發(fā)者對(duì)模式的使用。對(duì)于一個(gè)對(duì)象的管理不是什么困難,難就難在對(duì)整個(gè)對(duì)象群的管理。依賴注入可以讓容器管理對(duì)象,即“Don’t call me, I will call you”。這樣對(duì)象本身的生命周期以及對(duì)象之間的關(guān)系就不再讓開發(fā)者費(fèi)神了。

Spring AOP,借助于Spring實(shí)現(xiàn)攔截器,開發(fā)者能夠?qū)崿F(xiàn)以聲名方式使用企業(yè)級(jí)服務(wù),比如安全性服務(wù)、事務(wù)服務(wù)。AOP 合理的補(bǔ)充了OOP,借助于Spring AOP,開發(fā)者能夠高效的使用J2EE服務(wù)。

Spring服務(wù)抽象,借助于各種J2EE API抽象,使得開發(fā)者能夠一致地使用J2EE 技術(shù),而不管具體是使用什么J2EE API,借助于Spring服務(wù)抽象,使代碼大大減少,滿足“更少代碼,更少BUG”的軟件設(shè)計(jì)原則。

Spring IoC+Spring AOP+Spring服務(wù)抽象,一起形成Spring,這樣一個(gè)有機(jī)體,使構(gòu)建輕量級(jí)J2EE成為可能。

Spring事務(wù)管理

Spring事務(wù)管理可以分為兩類:編程式的和聲明式的。編程式的,比較靈活,但是代碼量大,存在重復(fù)的代碼比較多;聲明式的比編程式的更靈活方便。

1.傳統(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è)功能。

以往的我們使用JDBC在寫代碼時(shí),事務(wù)管理可能會(huì)是這樣:

  1. Connection conn = null;  
  2. try{  
  3.  conn = DBConnectionFactory.getConnection;  
  4.  conn.setAutoCommit(false);  
  5.  //do something  
  6.  conn.commit(); //commit transcation  
  7. }catch(Exception e)  
  8. finally catch(SQLException se){ //do sth.}  
  9.  //close ResultSet,PreparedStatement,Connection   
  10.  //notice:Maybe ocurr Exception when u close rs,pstmt,conn  
  11. }  

按照以往的思路來寫代碼,代碼量比較長(zhǎng),而且容易疏忽,忘掉一些try/catch,引發(fā)一些異常無法catch,雖然有時(shí)候我們會(huì)寫DBTool類,來關(guān)閉這些資源,并且保證在關(guān)閉這些資源時(shí),不向外拋異常,但是這樣做會(huì)導(dǎo)致額外的麻煩。

2.Spring事務(wù)管理提供的編程式

Spring提供了幾個(gè)關(guān)于事務(wù)處理的類:

TransactionDefinition //事務(wù)屬性定義

TranscationStatus //代表了當(dāng)前的事務(wù),可以提交

【編輯推薦】

  1. Spring2.0新特性點(diǎn)評(píng)
  2. Eclipse插件之Spring IDE
  3. Spring工作原理探秘
  4. 在Eclipse RCP中使用Spring框架
  5. Spring定時(shí)器的兩種實(shí)現(xiàn)方式
責(zé)任編輯:佚名 來源: Builder
相關(guān)推薦

2010-03-29 13:34:15

ibmdwSpring

2010-03-23 08:46:40

Spring

2009-06-30 16:57:42

Spring事務(wù)管理

2023-10-08 08:28:10

Spring事務(wù)管理

2009-06-17 14:57:11

Spring事務(wù)管理

2009-09-25 12:59:53

Hibernate事務(wù)

2014-08-25 09:12:47

Spring事務(wù)管理

2023-03-27 10:40:09

2009-06-08 17:56:00

SpringJDBC事務(wù)

2009-02-11 11:14:31

事務(wù)管理事務(wù)開始Spring

2009-02-11 13:08:29

事務(wù)提交事務(wù)管理Spring

2025-02-08 10:56:18

2009-06-03 10:20:11

Hibernate事務(wù)管理配置

2009-07-17 14:03:34

ibatis DAO事務(wù)管理

2022-08-04 08:46:16

單體架構(gòu)微服務(wù)事務(wù)管理

2009-09-29 09:44:52

Hibernate事務(wù)

2009-09-23 17:48:00

Hibernate事務(wù)

2025-02-21 08:00:00

事務(wù)管理SpringBootJava

2025-02-18 13:00:00

SpringBoot事務(wù)管理代碼

2023-05-06 07:29:49

Spring事務(wù)傳播
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)