事務隔離級別
Spring提供了五種隔離級別:
DEFAULT(默認):意思就是資料庫用啥我用啥SERIALIZABLE(串行化):事務之間以一種串行的方式執行REPEATABLE READ(可重復讀):是MySQL默認的隔離級別,同一個事務中相同的查詢會看到同樣的資料行READ COMMITED(讀已提交):一個事務可以讀到另一個事務已經提交的資料READ UNCOMMITED(讀未提交):一個事務可以讀到另一個事務未提交的資料
除了第一個是Spring新增的,其余的四個都是和「資料庫的事務隔離級別」一一對應,
事務傳播機制
事務傳播機制是指在一個可能含有事務的方法中,呼叫了另一個可能含有事務的方法,這兩個事務應該如何去取舍,最常見的場景就是在Service層,比如OrderService#createOrder()方法里呼叫了StockService#decreaseStock(),而這兩個方法明顯都是有事務的,這時,兩個事務如何相互影響就是事務傳播機制,
Spring提供了七種事務傳播機制:
REQUIRED:Spring「默認值」,如果存在事務,則加入當前事務;如果沒有事務,則開啟一個新的事務,REQUIRES_NEW:如果當前存在事務,把當前事務掛起,新建事務,SUPPORTS:支持當前事務,如果當前沒有事務,就以非事務方式執行,NOT_SUPPORTED:以非事務方式執行操作,如果當前存在事務,就把當前事務掛起,MANDATORY:如果當前存在事務,則加入當前事務;如果沒有事務,就拋出例外,NEVER:以非事務方式執行,如果當前存在事務,則拋出例外,NESTED:支持當前事務,新增Savepoint,與當前事務同步提交或回滾,外層事務失敗時,會回滾內層事務所做的動作,而內層事務操作失敗并不會引起外層事務的回滾,
生命周期
Spring管理了物件的生命周期,所以有必要了解Spring到底是怎么管理bean的生命周期的,如果我們想要在bean生命周期的某個時刻執行特定的功能應該怎么辦?
Spring bean的生命周期頗為復雜,以下是整個程序,參考org.springframework.beans.factory.BeanFactory
=>構造方法->呼叫BeanNameAware的setBeanName方法->呼叫BeanFactoryAware的setBeanFactory方法->呼叫ApplicationContextAware的setApplicationContext方法->呼叫BeanPostProcessor的postProcessBeforeInitialization方法->呼叫initializingBean的afterProprtiesSet方法->呼叫init-method指定的初始化方法->呼叫BeanPostProcessor的postProccessAfterInitialization方法->是用->呼叫DisableBean的destory方法->呼叫destory-method指定的銷毀方法
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/135014.html
標籤:其他
下一篇:【趙強老師】MySQL的閃回
