資源描述:
《spring框架的事務管理應用分析》由會員上傳分享,免費在線閱讀,更多相關內容在學術論文-天天文庫。
1、Spring框架的事務管理應用分析摘要介紹了J2EE平臺上JavaL配置數(shù)據(jù)提供給它?! pringIoC,借助于依賴注入設計模式,使得開發(fā)者不用理會對象自身的生命周期極其關系,而且能夠改善開發(fā)者對模式的使用。對于一個對象的管理不是什么困難,難就難在對整個對象群的管理。依賴注入可以讓容器管理對象,即“Don’tcallme,Iit(false); //dosomething conn.mit();//mittranscation}catch(Exceptione){ conn.rollback();}f
2、inally{ try{ conn.close(); }catch(SQLExceptionse){//dosth.} //closeResultSet,PreparedStatement,Connection //notice:MaybeocurrExceptiont,conn}按照以往的思路來寫代碼,代碼量比較長,而且容易疏忽,忘掉一些try/catch,引發(fā)一些異常無法catch,雖然有時候我們會寫DBTool類,來關閉這些資源,并且保證在關閉這些資源時,不向外拋異常,但是這樣做會導致額外的麻煩。
3、 2、Spring提供的編程式的事務處理 Spring提供了幾個關于事務處理的類:TransactionDefinition//事務屬性定義 TranscationStatus//代表了當前的事務,可以提交,回滾?! latformTransactionManager這個是spring提供的用于管理事務的基礎接口,其下有一個實現(xiàn)的抽象類AbstractPlatformTransactionManager,我們使用的事務管理類例如DataSourceTransactionManager等都是這個類的
4、子類。我們使用編程式的事務管理流程可能如下: (1)聲明數(shù)據(jù)源?! ?2)聲明一個事務管理類,例如:DataSourceTransactionManager,HibernateTransactionManger,JTATransactionManager等 (3)在我們的代碼中加入事務處理代碼:TransactionDefinitiontd=neit(ts);}catch(Exceptione){transactionManager.rollback(ts);}使用Spring提供的事務模板Trans
5、actionTemplate:voidadd(){ transactionTemplate.execute(neplate也是為我們省去了部分事務提交、回滾代碼;定義事務模板時,需注入事務管理對象?! ?、Spring聲明式事務處理 Spring聲明式事務處理也主要使用了IoC,AOP思想,提供了TransactionInterceptor攔截器和常用的代理類TransactionProxyFactoryBean,可以直接對組件進行事務代理?! ∈褂肨ransactionInterceptor的步驟:
6、 (1)定義數(shù)據(jù)源,事務管理類 ?。?)定義事務攔截器,例如:<beanid="transactionInterceptor"class="org.springframee="transactionManager"><refbean="transactionManager"/></property><propertyname="transactionAttributeSource"><value>.test.UserManager.*r=PROPAGATION_REQUIRED</value></prop
7、erty></bean>(3)為組件聲明一個代理類:ProxyFactoryBean<beanid="userManager"class="org.springframeee="proxyInterfaces"><value>.test.UserManager</value></property><propertyname="interceptorNames"><list><idreflocal="transactionInterceptor"/></list></property></bean>使用Tr
8、ansactionProxyFactoryBean:<beanid="userManager"class="org.springframee="transactionManager"><refbean="transactionManager"/></property><propertyname="target"><reflocal="userManagerTarget"/></property><propertyname="t