14 Spring事務原理

2021-10-20 16:04:05 字數 2158 閱讀 5407

@enabletransactionmanagement利用transactionmanagementconfigurationselector往容器中注入了兩個類

autoproxyregistrarproxytransactionmanagementconfiguration

autoproxyregistrar往容器中注入了infrastructureadvisorautoproxycreator

infrastructureadvisorautoproxycreator也是利用後置處理器機制,在物件建立後,然後包裝物件返回乙個**物件

檢視它的父類,發現跟實現aop的方式是類似的,都是根據一些規則找到對應的增強器,然後封裝成methodinterceptor,當物件呼叫目標方法時,動態**機制就會鏈式呼叫這些***。

infrastructureadvisorautoproxycreator

extends

abstractadvisorautoproxycreator

extends

abstractautoproxycreator

extends

proxyprocessorsupport

implements

smartinstantiationawarebeanpostprocessor

, beanfactoryaware

proxytransactionmanagementconfiguration類資訊如下

@configuration

public

class

proxytransactionmanagementconfiguration

extends

abstracttransactionmanagementconfiguration

@bean

( name =

)// 給容器中增加了事務增強器

@role(2

)public beanfactorytransactionattributesourceadvisor transactionadvisor()

return advisor;

}// 事務註解解析器

@bean

@role(2

)public transactionattributesource transactionattributesource()

// 事務***, 它繼承了 methodinterceptor

// 因此在收集增強器的時候,這個也會被收集進去

@bean

@role(2

)public transactioninterceptor transactioninterceptor()

return interceptor;

}}

下面主要檢視transactioninterceptor#invoke方法

public

class

transactioninterceptor

extends

transactionaspectsupport

implements

methodinterceptor

, serializable

}

public

abstract

class

transactionaspectsupport

implements

beanfactoryaware

, initializingbean

catch

(throwable ex)

finally

// 6. 如果執行正常,則拿到事務管理器,提交事務

committransactionafterreturning

(txinfo)

;return retval;

}else

}}

spring 基礎14 spring常用註解彙總

使用註解之前要開啟自動掃瞄功能 其中base package為需要掃瞄的包 含子包 configuration把乙個類作為乙個ioc容器,它的某個方法頭上如果註冊了 bean,就會作為這個spring容器中的bean。scope註解 作用域 lazy true 表示延遲初始化 service用於標註...

Spring事務底層原理

由於spring解決的問題是對單個資料庫進行區域性事務處理的,具體的實現首先用了spring中的ioc劃分了事務處理單元。並且將對事務的各種配置放到了ioc容器中 設定事務管理器,設定事務的傳播特性即隔離機制 spring事務處理模組是通過aop功能來實現宣告式處理機制的,具體操作 比如事務實行的配...

Spring 事務底層原理

由於 spring 解決的問題是對單個資料庫進行區域性事務處理的,具體的實現首相用 spring 中的 ioc 劃分了事務處理單元。並且將對事務的各種配置放到了 ioc 容器中 設定事務管理器,設定事務的傳播特性及隔離機制 spring 事務處理模組是通過 aop 功能來實現宣告式事務處理的,具體操...