Spring宣告式事務控制
程式設計式事務相關的API
1、PlatformTransactionManager:平臺事務管理器 介面
作用:封裝事務控制的邏輯
dao層實現技術很多:
- jdbc/DBUtils/JdbcTemplate: 事務控制 connection.setAutoCommit(false);
hibernate: 事務控制 session.beginTransaction();
發現 dao 實現技術不同 導致控制事務的方式也不同
封裝控制事務的程式碼也不同jdbc/DBUtils/JdbcTemplate:使用平臺事務管理器 是 DataSourceTransactionManager
hibernate: 使用平臺事務管理器 是 HibernateTransactionManager
2、TransactionDifination:事務定義管理器
作用:封裝事務的相關引數 封裝的是靜態資訊
隔離級別 isolation
傳播行為 propogation
作用:為解決業務方法呼叫業務方法問題(事務巢狀事務問題)
超時時間 timer
是否只讀 read-only
3、TransactionStatus : 事物的狀態物件
作用:在不通過的時間點上 封裝當前事務的一些狀態資訊
TransactionStatus封裝該事務的動態資訊的
使用xml配置
宣告式事務控制主要是配置XML,我們只看事務控制相關的部分
<!--1.配置事務管理平臺 注入配好了連線資訊的連線池-->
<bean id="TransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!--2.配置事物的通知
配置平臺事務管理器(封裝的是事務控制的邏輯)中的事務定義管理器
tx:attributes標籤就是用來配置事務定義管理器(事務的靜態資訊),比如隔離級別,傳播行為等,不配置就為預設
-->
<tx:advice id="txAdvice" transaction-manager="TransactionManager">
<tx:attributes>
<!-- 每個被事務增強的方法(切點)都可以單獨進行引數的設定
而且method中可以使用萬用字元,指定以XXX開頭等等 -->
<!-- <tx:method name="transfer" isolation="REPEATABLE_READ" propagation="REQUIRED" read-only="false"/>
<tx:method name="save*" isolation="READ_COMMITTED" propagation="REQUIRED" read-only="false"/>
<tx:method name="query*" isolation="READ_COMMITTED" propagation="SUPPORTS" read-only="true"/> -->
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
<!--3.切點和通知的結合 配置織入-->
<aop:config>
<aop:advisor advice-ref="txAdvice" pointcut="execution(* com.cuixiaoming.service.impl.*.*(..))"></aop:advisor>
</aop:config>
使用基本註解
配置XML
<!--1.配置事務管理平臺-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!--2.掃描包-->
<context:component-scan base-package="com.cuixiaoming"></context:component-scan>
<!--3.事物的註解驅動-->
<tx:annotation-driven transaction-manager="transactionManager"/>
需要進行事務控制的bean配置起來非常簡單,只需要加上@Transactional
即可,載入方法上是這個方法進行事務控制,載入類上是所有方法都進行事務控制;
package com.cuixiaoming.service.impl;
import com.cuixiaoming.dao.AccountDao;
import com.cuixiaoming.domain.Account;
import com.cuixiaoming.service.AccountService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service("accountService")
@Transactional
public class AccountServiceImplAnno implements AccountService {
@Autowired
private AccountDao accountDao;
public void setAccountDao(AccountDao accountDao) {
this.accountDao = accountDao;
}
@Override
public void transfer(String outman,String inman ,double money) {
accountDao.in(new Account(inman,money));
//int i=1/0;
accountDao.out(new Account(outman,money));
}
}
全註解
略
全註解和半註解形式差不錯,只是把配置XML程式設計了配置類,回頭再補
相關文章
- Spring宣告式事務控制原理之宣告式事務的重要元件在AOP中的應用Spring元件
- Spring-宣告式事務Spring
- 三 Spring 宣告式事務Spring
- Spring宣告式事務@Transactional使用Spring
- spring宣告式事務管理配置Spring
- Spring的事務管理(二)宣告式事務管理Spring
- Spring @Transactional 宣告式事務揭祕Spring
- 深刻理解Spring宣告式事務Spring
- 五(二)、spring 宣告式事務xml配置SpringXML
- Spring的四種宣告式事務的配置-Hibernate事務Spring
- Spring宣告式事務純xml模式回顧SpringXML模式
- JavaEE(12)Spring整合Mybaits、宣告式事務JavaSpringAI
- Spring boot +mybatis 實現宣告式事務管理Spring BootMyBatis
- spring宣告式事務無法關閉sessionSpringSession
- Spring筆記(4) - Spring的程式設計式事務和宣告式事務詳解Spring筆記程式設計
- 全面分析 Spring 的程式設計式事務管理及宣告式事務管理Spring程式設計
- Springboot資料庫事務處理——Spring宣告式事務Spring Boot資料庫
- Spring宣告式事務的兩種實現方式Spring
- 筆記53-Spring jdbcTemplate&宣告式事務筆記SpringJDBC
- Spring中的AOP,以及宣告式事務 @Transactional無法攔截事務Spring
- Spring MVC + Mybatis + Spring Aop宣告式事務管理沒有作用SpringMVCMyBatis
- Spring事務的介紹,以及基於註解@Transactional的宣告式事務Spring
- Spring宣告式事務注意點,以及不生效情況Spring
- Spring程式設計式和宣告式事務例項講解Spring程式設計
- Spring宣告式事務管理出錯示例與解決之道Spring
- SpringMVC、MyBatis 宣告式事務管理SpringMVCMyBatis
- 宣告式事務能否和程式設計式事務巢狀使用?程式設計巢狀
- 保護億萬資料安全,Spring有“宣告式事務”絕招Spring
- Spring中的事務控制Spring
- springboot專案-宣告式事務失效Spring Boot
- spring事物配置,宣告式事務管理和基於@Transactional註解的使用Spring
- 分散式事務之Spring事務與JMS事務(二)分散式Spring
- Spring Cloud Feign 宣告式服務呼叫SpringCloud
- 宣告式服務呼叫 Spring Cloud FeignSpringCloud
- Spring Data JPA系列4——Spring宣告式數事務處理與多資料來源支援Spring
- Spring Boot 揭祕與實戰(二) 資料儲存篇 - 宣告式事務管理Spring Boot
- Spring宣告式事務報錯"Transaction rolled back because it has been marked as rollback-only"分析...Spring
- Spring/SpringBoot中的宣告式事務和程式設計式事務原始碼、區別、優缺點、適用場景、實戰Spring Boot程式設計原始碼