面試中,spring的事務問得比較多,特別是spring事務的傳播行為和隔離級別,下面就讓我們一起來複習下,首先我們要清楚事務的四大特徵(acid):
spring有兩種事務處理方式,一種是宣告式事務,另外一種是程式設計式事務。
在配置宣告式事務管理的時候,我們用到最多的是註解方式,我們看下@transactional這個註解的原始碼:
@target()
@retention
(retentionpolicy.runtime)
@inherited
@documented
public @inte***ce
transactional
;//回滾事務的異常類名稱定義
string[
]rollbackforclassname()
default
;//當產生哪些異常不回滾
class<
?extends
throwable
>
norollbackfor()
default
;//當產生哪些異常不回滾類名稱定義
string[
]norollbackforclassname()
default
;}
上面的屬性中,這裡重點解釋傳播行為和隔離級別
下面是定義傳播行為propagation列舉類的原始碼:
public
enum propagation
public
intvalue()
}
先看下幾個基本的概念:
髒讀:乙個事務讀取到另一事務未提交的更新資料。
不可重複讀:在同一事務中, 第一次讀取和第二次讀取過程中,有另外乙個事務更新提交了資料,導致多次讀取同一資料返回的結果不同。
幻讀 : 第乙個事務正在查詢符合某一條件的資料,這時,另乙個事務又插入了一條符合條件的資料,第乙個事務在第二次查詢符合同一條件的資料時,發現多了一條前一次查詢時沒有的資料,彷彿幻覺一樣,這就是幻像讀。
【提示】:不可重複讀針對的是更新和刪除操作導致資料不一致,幻讀針對的是插入操作導致的資料不一致。
下面是定義隔離級別isolation列舉類的原始碼:
public
enum isolation
public
intvalue()
}
談談你對Spring的理解
spring是乙個開源的輕量級的應用開發框架,其目的是用於簡化企業級應用開發,降低 的侵入性和耦合度。spring提供的ioc和aop功能,可以將容器內的元件耦合度降低至最低,即解耦,為將來的工程 的維護提供了方便。spring為系統提供了乙個整體的解決方案,開發者除了可以利用它本身具有的功能外,還...
談談你對spring的理解
回答 spring是乙個輕量級的ioc和aop容器框架。spring的優點 不講出口 spring的輕量級是是從它的大小和開銷來說的,完整的spring框架可以在乙個大小只有1mb多的jar檔案裡發布。並且spring所需的處理開銷也是微不足道的。spring是非侵入式的,spring的api是不會...
談談你對AtomicInteger的理解
atomicinteger是乙個提供原子操作的integer類,通過執行緒安全的方式操作加減。十分適合高併發情況下的使用 對於全域性變數的數值型別操作 num 若沒有加synchronized關鍵字則是執行緒不安全的,num 解析為num num 1,明顯,這個操作不具備原子性,多執行緒時必然會出現...