Spring註解之事務管理
註解是Spring框架裡很常用的,本博文對Annotation的事務管理進行說明,目的是為程式設計學習者提供參考的部落格。
@Transactional放在一個類前面時,只是對public型別的方法有用
若類中某些方法不需要事務管理時,通過@Transaction(propagation = Propagation.Not_SUPPORTED)註釋說明事務管理對這個方法不適應
@Transactional
public class TestServiceBean implements TestService {
private TestDao dao;
public void setDao(TestDao dao) {
this.dao = dao;
}
@Transactional(propagation = Propagation.NOT_SUPPORTED)
public List<Object> getAll() {
return null;
}
}
事物傳播行為介紹:
@Transactional(propagation=Propagation.REQUIRED)
如果有事務, 那麼加入事務, 沒有的話新建一個(預設情況下)
@Transactional(propagation=Propagation.NOT_SUPPORTED)
容器不為這個方法開啟事務
@Transactional(propagation=Propagation.REQUIRES_NEW)
不管是否存在事務,都建立一個新的事務,原來的掛起,新的執行完畢,繼續執行老的事務
@Transactional(propagation=Propagation.MANDATORY)
必須在一個已有的事務中執行,否則丟擲異常
@Transactional(propagation=Propagation.NEVER)
必須在一個沒有的事務中執行,否則丟擲異常(與Propagation.MANDATORY相反)
@Transactional(propagation=Propagation.SUPPORTS)
如果其他bean呼叫這個方法,在其他bean中宣告事務,那就用事務.如果其他bean沒有宣告事務,那就不用事務.
事物超時設定:
@Transactional(timeout=30) //預設是30秒
@Transactional註解中常用引數說明
參 數 名 稱 | 功 能 描 述 |
readOnly | 該屬性用於設定當前事務是否為只讀事務,設定為true表示只讀,false則表示可讀寫,預設值為false。例如:@Transactional(readOnly=true) |
rollbackFor | 該屬性用於設定需要進行回滾的異常類陣列,當方法中丟擲指定異常陣列中的異常時,則進行事務回滾。例如: 指定單一異常類:@Transactional(rollbackFor=RuntimeException.class) 指定多個異常類:@Transactional(rollbackFor={RuntimeException.class, Exception.class}) |
續表)
參 數 名 稱 | 功 能 描 述 |
rollbackForClassName | 該屬性用於設定需要進行回滾的異常類名稱陣列,當方法中丟擲指定異常名稱陣列中的異常時,則進行事務回滾。例如: 指定單一異常類名稱:@Transactional(rollbackForClassName="RuntimeException") 指定多個異常類名稱:@Transactional(rollbackForClassName={"RuntimeException","Exception"}) |
noRollbackFor | 該屬性用於設定不需要進行回滾的異常類陣列,當方法中丟擲指定異常陣列中的異常時,不進行事務回滾。例如: 指定單一異常類:@Transactional(noRollbackFor=RuntimeException.class) 指定多個異常類:@Transactional(noRollbackFor={RuntimeException.class, Exception.class}) |
noRollbackForClassName | 該屬性用於設定不需要進行回滾的異常類名稱陣列,當方法中丟擲指定異常名稱陣列中的異常時,不進行事務回滾。例如: 指定單一異常類名稱:@Transactional(noRollbackForClassName="RuntimeException") 指定多個異常類名稱: @Transactional(noRollbackForClassName={"RuntimeException","Exception"}) |
propagation | 該屬性用於設定事務的傳播行為,具體取值可參考表6-7。 例如:@Transactional(propagation=Propagation.NOT_SUPPORTED,readOnly=true) |
isolation | 該屬性用於設定底層資料庫的事務隔離級別,事務隔離級別用於處理多事務併發的情況,通常使用資料庫的預設隔離級別即可,基本不需要進行設定 |
timeout | 該屬性用於設定事務的超時秒數,預設值為-1表示永不超時 |
相關文章
- Spring 框架系列之事務管理Spring框架
- Spring之事務原始碼Spring原始碼
- Spring系列之事務的控制 註解實現+xml實現+事務的隔離等級SpringXML
- 【Spring註解】事務註解@TransactionalSpring
- Spring5.0原始碼學習系列之事務管理概述Spring原始碼
- spring,mybatis事務管理配置與@Transactional註解使用[轉]SpringMyBatis
- Spring系列之事物是如何管理的Spring
- spring定時任務註解Spring
- Mysql之事務MySql
- Spring 使用註解方式進行事物管理Spring
- 分散式柔性事務之事務訊息詳解分散式
- spring事物配置,宣告式事務管理和基於@Transactional註解的使用Spring
- Spring學習之事務的使用姿勢一覽Spring
- @Transactional註解管理事務和手動提交事務
- Spring @Transaction 註解是如何執行事務的?Spring
- Spring非同步Async和事務Transactional註解Spring非同步
- spring3.2 @Scheduled註解 定時任務Spring
- Spring管理的@Configuration註解使用Spring
- Spring框架系列(二)之Bean的註解管理Spring框架Bean
- Spring註解Spring
- Spring事務管理(詳解+例項)Spring
- 《四 spring原始碼》spring的事務註解@Transactional 原理分析Spring原始碼
- Spring Boot 之事件(Event)Spring Boot事件
- Spring註解詳解Spring
- spring基於註解配置實現事務控制Spring
- 使用spring @Scheduled註解執行定時任務、Spring
- myrocks之事務處理
- Redis之事務處理Redis
- Spring5:@Autowired註解、@Resource註解和@Service註解Spring
- Spring常用註解Spring
- Spring註解大全Spring
- Spring boot註解Spring Boot
- Spring新註解Spring
- spring註解2Spring
- Spring原始碼之事務(一)— TransactionAutoConfiguration自動配置Spring原始碼
- Spring 各種註解備註Spring
- SPRING-spring註解整理Spring
- Spring 註解程式設計之模式註解Spring程式設計模式