日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spring 事务笔记(四)

發(fā)布時(shí)間:2024/9/19 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring 事务笔记(四) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

spring 事務(wù)筆記(四)

文章目錄

    • spring 事務(wù)筆記(四)
      • spring 事務(wù)原理簡述
      • 聲明式事務(wù)
        • 1. 注解方式
          • 配置事務(wù)管理器
          • 開啟事務(wù)并使用
        • 2.xml配置方式
          • 配置事務(wù)管理器
          • 配置事務(wù)切入點(diǎn)

spring 事務(wù)原理簡述

之前用spring事務(wù)都是直接用注解的方式,后來去試試用xml配置這種,其實(shí)這兩種都是聲明式的事務(wù)。spring的事務(wù)都是通過AOP實(shí)現(xiàn)的,說白了就是在用AOP前置通知加個(gè)對(duì)數(shù)據(jù)連接設(shè)置為非自動(dòng)提交(默認(rèn)自動(dòng)提交),然后在用個(gè)AOP的返回通知做個(gè)自動(dòng)提交,事務(wù)就這樣實(shí)現(xiàn)了。

聲明式事務(wù)

1. 注解方式

配置事務(wù)管理器

因?yàn)橐胹pring的事務(wù),就需要在spring上下文中注冊(cè)一個(gè)DataSourceTransactionManager,這個(gè)事務(wù)管理者主要做數(shù)據(jù)庫事務(wù)。

@Configuration public class DataSourceConfig {@Beanpublic DataSourceTransactionManager transactionManager() {return new DataSourceTransactionManager(dataSource());}@Beanpublic DataSource dataSource(){....return dataSource; } }
開啟事務(wù)并使用

使用是十分簡單的,之前我在自己的另一個(gè)博客中有寫過:(1條消息) spring事務(wù)(三)_鴨梨的藥丸哥的博客-CSDN博客,這里就直接拷過來了。

開啟事務(wù)管理功能: @EnableTransactionManagement

事務(wù)注解: @Transactional

@Transactional的屬性

  • name 屬性指定選擇哪個(gè)事務(wù)管理器。
  • propagation 事務(wù)的傳播行為,默認(rèn)值為 REQUIRED。
  • isolation 事務(wù)的隔離度,默認(rèn)值采用 DEFAULT。
  • timeout 事務(wù)的超時(shí)時(shí)間,默認(rèn)值為-1。
  • read-only 指定事務(wù)是否為只讀事務(wù),默認(rèn)值為 false;
  • rollback-for 用于指定能夠觸發(fā)事務(wù)回滾的異常類型
  • no-rollback- for 拋出 no-rollback-for 指定的異常類型,不回滾事務(wù)。
    事務(wù)的隔離度

剛好對(duì)應(yīng)數(shù)據(jù)庫的幾個(gè)隔離級(jí)別,默認(rèn)是DEFAULT(數(shù)據(jù)庫啟用的隔離級(jí)別)

@Transactional(isolation = Isolation.READ_UNCOMMITTED):讀取未提交數(shù)據(jù)@Transactional(isolation = Isolation.READ_COMMITTED):讀取已提交數(shù)據(jù)@Transactional(isolation = Isolation.REPEATABLE_READ):可重復(fù)讀@Transactional(isolation = Isolation.SERIALIZABLE):串行化

2.xml配置方式

配置事務(wù)管理器

一個(gè)數(shù)據(jù)源,一個(gè)transactionManager,沒什么好說的。

<bean id="dataSource"class="com.alibaba.druid.pool.DruidDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver" /><property name="url" value="jdbc:mysql://localhost:3306/User?useSSL=true" /><property name="username" value="root" /><property name="password" value="root" /> </bean><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"/> </bean>
配置事務(wù)切入點(diǎn)

配一個(gè)切點(diǎn)和一個(gè)通知,因?yàn)檫@個(gè)是事務(wù)通知,所以我們引用的是spring事務(wù)提供的transactionManager,然后通過tx:attributes去定義要匹配的方法,對(duì)匹配的方法定義一些等級(jí)即可。

<!-- 開啟aop注解支持 --><aop:aspectj-autoproxy/><aop:config><aop:pointcut id="Admincut" expression="execution(* com.wenyao.serviceImpl.AdminServiceImpl.*())"/><aop:advisor advice-ref="txAdvice" pointcut-ref="Admincut"></aop:advisor></aop:config><tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><!-- 匹配查詢的方法 --><tx:method name="get*" read-only="true"/><tx:method name="query*" read-only="true"/><tx:method name="find*" read-only="true"/><tx:method name="count*" read-only="true"/><!-- 匹配增刪改方法 事務(wù)行為,事務(wù)的隔離度--><tx:method name="save*" propagation="REQUIRED" isolation="DEFAULT"/><tx:method name="add*" propagation="REQUIRED" isolation="DEFAULT"/></tx:attributes></tx:advice> method name="add*" propagation="REQUIRED" isolation="DEFAULT"/></tx:attributes></tx:advice> 與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的spring 事务笔记(四)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。