freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

全面分析spring的編程式事務管理及聲明式事務管理(編輯修改稿)

2025-07-13 21:22 本頁面
 

【文章內容簡介】 ) 方法便可啟動一個事務。創(chuàng)建并啟動了事務之后,便可以開始編寫業(yè)務邏輯代碼,然后在適當?shù)牡胤綀?zhí)行事務的提交或者回滾。基于 TransactionTemplate 的編程式事務管理通過前面的示例可以發(fā)現(xiàn),這種事務管理方式很容易理解,但令人頭疼的是,事務管理的代碼散落在業(yè)務邏輯代碼中,破壞了原有代碼的條理性,并且每一個業(yè)務方法都包含了類似的啟動事務、提交/回滾事務的樣板代碼。幸好,Spring 也意識到了這些,并提供了簡化的方法,這就是 Spring 在數(shù)據(jù)訪問層非常常見的模板回調模式。如清單6所示:清單6. 基于 TransactionTemplate 的事務管理示例代碼public class BankServiceImpl implements BankService {private BankDao bankDao。private TransactionTemplate transactionTemplate。......public boolean transfer(final Long fromId, final Long toId, final double amount) {return (Boolean) (new TransactionCallback(){public Object doInTransaction(TransactionStatus status) {Object result。try {result = (fromId, toId, amount)。} catch (Exception e) {()。result = false。(Transfer Error!)。}return result。}})。}}相應的XML配置如下:清單 7. 基于 TransactionTemplate 的事務管理示例配置文件bean id=bankServiceclass=property name=bankDao ref=bankDao/property name=transactionTemplate ref=transactionTemplate//beanTransactionTemplate 的 execute() 方法有一個 TransactionCallback 類型的參數(shù),該接口中定義了一個 doInTransaction() 方法,通常我們以匿名內部類的方式實現(xiàn) TransactionCallback 接口,并在其 doInTransaction() 方法中書寫業(yè)務邏輯代碼。這里可以使用默認的事務提交和回滾規(guī)則,這樣在業(yè)務代碼中就不需要顯式調用任何事務管理的 API。doInTransaction() 方法有一個TransactionStatus 類型的參數(shù),我們可以在方法的任何位置調用該參數(shù)的 setRollbackOnly() 方法將事務標識為回滾的,以執(zhí)行事務回滾。根據(jù)默認規(guī)則,如果在執(zhí)行回調方法的過程中拋出了未檢查異常,() 方法,則回滾事務;如果事務執(zhí)行完成或者拋出了 checked 類型的異常,則提交事務。TransactionCallback 接口有一個子接口 TransactionCallbackWithoutResult,該接口中定義了一個 doInTransactionWithoutResult() 方法,TransactionCallbackWithoutResult 接口主要用于事務過程中不需要返回值的情況。當然,對于不需要返回值的情況,我們仍然可以使用 TransactionCallback 接口,并在方法中返回任意值即可。聲明式事務管理Spring 的聲明式事務管理概述Spring 的聲明式事務管理在底層是建立在 AOP 的基礎之上的。其本質是對方法前后進行攔截,然后在目標方法開始之前創(chuàng)建或者加入一個事務,在執(zhí)行完目標方法之后根據(jù)執(zhí)行情況提交或者回滾事務。聲明式事務最大的優(yōu)點就是不需要通過編程的方式管理事務,這樣就不需要在業(yè)務邏輯代碼中摻雜事務管理的代碼,只需在配置文件中做相關的事務規(guī)則聲明(或通過等價的基于標注的方式),便可以將事務規(guī)則應用到業(yè)務邏輯中。因為事務管理本身就是一個典型的橫切邏輯,正是 AOP 的用武之地。Spring 開發(fā)團隊也意識到了這一點,為聲明式事務提供了簡單而強大的支持。聲明式事務管理曾經(jīng)是 EJB 引以為傲的一個亮點,如今 Spring 讓 POJO 在事務管理方面也擁有了和 EJB 一樣的待遇,讓開發(fā)人員在 EJB 容器之外也用上了強大的聲明式事務管理功能,這主要得益于 Spring 依賴注入容器和 Spring AOP 的支持。依賴注入容器為聲明式事務管理提供了基礎設施,使得 Bean 對于 Spring 框架而言是可管理的;而 Spring AOP 則是聲明式事務管理的直接實現(xiàn)者,這一點通過清單8可以看出來。通常情況下,筆者強烈建議在開發(fā)中使用聲明式事務,不僅因為其簡單,更主要是因為這樣使得純業(yè)務代碼不被污染,極大方便后期的代碼維護。和編程式事務相比,聲明式事務唯一不足地方是,后者的最細粒度只能作用到方法級別,無法做到像編程式事務那樣可以作用到代碼塊級別。但是即便有這樣的需求,也存在很多變通的方法,比如,可以將需要進行事務管理的代碼塊獨立為方法等等。下面就來看看 Spring 為我們提供的聲明式事務管理功能?;?TransactionInter... 的聲明式事務管理最初,Spring 提供了 TransactionInterceptor 類來實施聲明式事務管理功能。先看清單8的配置文件:清單 8. 基于 TransactionInterceptor 的事務管理示例配置文件beans.........bean id=transactionInterceptorclass=property name=transactionManager ref=transactionManager/property name=transactionAttributespropsprop key=transferPROPAGATION_REQUIRED/prop/props/property/beanbean id=bankServiceTargetclass=property name=bankDao ref=bankDao//beanbean id=bankServiceclass=property name=target ref=bankServiceTarget/property name=interceptorNameslistidref bean=transactionInterceptor//list/property/bean....../beans首先,我們配置了一個 TransactionInterceptor
點擊復制文檔內容
醫(yī)療健康相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1