Spring框架中基於XML的宣告式事務控制

2021-10-06 02:23:23 字數 1762 閱讀 7958

例如:在關聯式資料庫中,乙個事務可以是一條sql語句,一組sql語句或整個程式。

* 原子性(atomicity)

:乙個事務是乙個不可分割的工作單位,事務中包括的操作要麼都做,要麼都不做。

* 一致性(consistency)

:事務必須是使資料庫從乙個一致性狀態變到另乙個一致性狀態。一致性與原子性是密切相關的。

* 隔離性(isolation)

:乙個事務的執行不能被其他事務干擾。即乙個事務內部的操作及使用的資料對併發的其他事務是隔離的,併發執行的各個事務之間不能互相干擾。

* 永續性(durability)

:指乙個事務一旦提交,它對資料庫中資料的改變就應該是永久性的。接下來的其他操作或故障不應該對其有任何影響。

張三向李四轉錢,需要的步驟如下:

1、查詢張三賬戶的錢夠不夠

2、查詢有沒有李四的賬戶

3、修改張三賬戶餘額(減去轉賬金額)

4、修改李四賬戶餘額(加上轉賬金額)

「查詢賬戶餘額」是乙個事務,「修改賬戶餘額」也是乙個事物,但是「轉賬」這個事務中包含了查詢和修改的步驟,它們只是乙個事務中的一步,必須步驟全部完成,「轉賬」才算完成。如果在第三步後出現異常,則會出現「張三減錢而李四並沒有加錢」的情況,違反了事物的原子性和一致性。

spring宣告式事務控制解決了這個問題

1、配置事物管理器

使用spring提供的事務管理器類datasourcetransactionmanager來實現,要為其注入資料來源元件。

"transactionmanager"

class

="org.springframework.jdbc.datasource.datasourcetransactionmanager"

>

"datasource" ref=

"datasource"

>

<

/property>

<

/bean>

2、為指定的事務管理器設定事務屬性
"txadvice" transaction-manager=

"transactionmanager"

>

"transfer" propagation=

"required" read-only=

"false"

/>

<

/tx:attributes>

<

/tx:advice>

標籤中的name屬性用於指定匹配的方法,需要對方法名進行約定,也可以使用萬用字元(*),其他屬性均可選。

propagation屬性:事務傳播機制,常用的有兩種

read-only屬性:事務是否唯讀,預設值為false。對於只執行查詢的事務,設定為true能提高事務處理的效能

3、定義切面

"execution(* cn.hans.service.*.*(..))" id=

"pt"

/>

"txadvice" pointcut-ref=

"pt"

/>

<

/aop:config>

標籤的advice-ref屬性引用的是通過標籤設定了事物屬性的元件。

Spring框架之基於xml的IoC的快速入門02

ioc 控制反轉 把建立物件的權力交給框架,是框架的重要特徵,並非物件導向程式設計的專用術語.它包括依賴注入和依賴查詢.削減電腦程式的耦合 解除我們 中的依賴關係 搭建環境準備 官網 1.根據官網查詢bean.xml的約束 2.通過bean標籤來建立物件並且給屬性賦值唯一標識和全限定類名 bean....

基於xml配置Spring

之前用的是springboot,沒接觸過spring的xml配置,最近專案轉到普通spring,順便學習了一下基於xml的配置。首先是命名空間的定義 處為預設命名空間,它沒有空間名,用於springbean的定義 處xsi標準命名空間,用於為每個文件中的命名空間指定相應的schema樣式檔案,是w3...

Spring 基於XML配置

基於xml的配置 對於基於xml的配置,spring 1.0的配置檔案採用dtd格式,spring2.0以後採用schema格式,後者讓不同型別的配罝擁有了自己的命名空間,使得配置檔案更具擴充套件性。此外,spring基於schema 配置方案為許多領域的問題提供了簡化的配置方法,配置工作因此得到了...