宣告式事務原理 2 方法呼叫流程

2021-10-11 09:29:39 字數 2187 閱讀 4512

執行事務方法時和 aop 一樣,會進入dynamicadvisedinterceptor#intercept方法,攔截鏈中只有乙個transactioninterceptor***。transactioninterceptor繼承了methodinterceptor介面,所以執行事務方法時會呼叫invoke方法,流程見《aop原理——3. aop方法呼叫流程》。

transactioninterceptor#invoke

public object invoke

(final methodinvocation invocation)

throws throwable

transactionaspectsupport#invokewithintransaction

protected object invokewithintransaction

(method method,

@nullable class<

?> targetclass,

final invocationcallback invocation)

throws throwable

catch

(throwable ex)

finally

// 提交

committransactionafterreturning

(txinfo)

;return retval;

}else

// ... 先不考慮

}

determinetransactionmanager——獲取事務管理器,從容器中拿

protected platformtransactionmanager determinetransactionmanager

(@nullable transactionattribute txattr)

string qualifier = txattr.

getqualifier()

;if(stringutils.

hastext

(qualifier)

)else

if(stringutils.

hastext

(this

.transactionmanagerbeanname)

)else

}return defaulttransactionmanager;

}}

completetransactionafterthrowing——異常回滾

protected

void

completetransactionafterthrowing

(@nullable transactioninfo txinfo, throwable ex)

catch

// ...

}else

catch

// ...}}

}

committransactionafterreturning——提交

protected

void

committransactionafterreturning

(@nullable transactioninfo txinfo)

}

cleanuptransactioninfo——還原

protected

void

cleanuptransactioninfo

(@nullable transactioninfo txinfo)

}protected

final

class

transactioninfo

}

AQS簡介 2 方法

結點入隊,必要的時候需要初始化 private node enq final node node else 當前執行緒或給定模式的結點入隊 private node addwaiter node mode 結點入隊,具體看上面 enq node 返回入隊的結點 return node 喚醒後繼 如果...

Objective C( 三 方法的宣告與實現)

oc方法的宣告與實現 oc方法的宣告在 inte ce中 大括號外 end上面 oc方法的實現在 implementation 中 end上面 oc方法中,乙個引數對應乙個冒號 方法名 例 fangfaming 冒號也是方法名的一部分 返回值型別 方法名 引數名 引數型別 引數 引數名 引數型別 引...

day01 方法的宣告和實現

1 定義乙個類 分為宣告和實現 inte ce 類名 nsobject 方法的宣告表示功能 end implementation 類名 end 2一類食物不僅有相同的特徵還有相同的行為 行為就是功能。c語言中使用函式來表示乙個功能 oc使用方法來表示乙個功能 方法函式都表示乙個功能 3 無引數方法 ...