欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于XML的Spring聲明事務(wù)控制

 更新時間:2022年07月29日 09:20:04   作者:YonminMa  
這篇文章主要為大家詳細介紹了基于XML的Spring聲明事務(wù)控制,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

Spring框架為我們提供好了事務(wù)控制器,我們不必自己寫事務(wù)控制器。下面就詳細說明基于XML配置Spring事務(wù)控制器的步驟。

1. 配置事務(wù)管理器

<!-- 配置事務(wù)管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
? ? <property name="dataSource" ref="dataSource"></property>
</bean>

2. 配置事務(wù)的通知

此時我們需導(dǎo)入事務(wù)的約束 tx名稱空間和約束,同時也需要AOP的約束

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
? ? ? ?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
? ? ? ?xmlns:aop="http://www.springframework.org/schema/aop"
? ? ? ?xmlns:tx="http://www.springframework.org/schema/tx"
? ? ? ?xsi:schemaLocation="
? ? ? ? http://www.springframework.org/schema/beans
? ? ? ? https://www.springframework.org/schema/beans/spring-beans.xsd
? ? ? ? http://www.springframework.org/schema/tx
? ? ? ? https://www.springframework.org/schema/tx/spring-tx.xsd
? ? ? ? http://www.springframework.org/schema/aop
? ? ? ? https://www.springframework.org/schema/aop/spring-aop.xsd">
?? ?
?? ?...
</beans>

使用<tx:advice>標簽配置事務(wù)通知

屬性:

  • id:給事務(wù)通知起一個唯一標識
  • transaction-manager:給事務(wù)通知提供一個事務(wù)管理器引用
<!-- 配置事務(wù)的通知 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">

</tx:advice>

3. 配置AOP中的通用切入點(需要增強的類)表達式

expression中的表達式寫法參考上篇博客,此處僅為舉例

<!-- 配置AOP -->
<aop:config>
? ? <!-- 配置切入點表達式 -->
? ? <aop:pointcut id="pt1" expression="execution(* *…*.*(…))"/>
</aop:config>

4. 建立事務(wù)通知和切入點表達式的對應(yīng)關(guān)系

<!-- 配置AOP -->
<aop:config>
? ? <!-- 配置切入點表達式 -->
? ? <aop:pointcut id="pt1" expression="execution(* com.*.*(..))"/>
? ? <!-- 建立切入點表達式和事務(wù)通知的對應(yīng)關(guān)系 -->
? ? <aop:advisor advice-ref="txAdvice" pointcut-ref="pt1"></aop:advisor>
</aop:config>

5. 配置事務(wù)的屬性

在事務(wù)的通知<tx:advice>標簽內(nèi)部

事務(wù)的屬性:

method:指定切入類的某個成員方法,可使用通配符。通配度越高則優(yōu)先級越低。
isolation:用于指定事務(wù)的隔離級別。默認值是DEFAULT,表示使用數(shù)據(jù)庫的默認隔離級別。
propagation:用于指定事務(wù)的傳播行為。默認是REQUIRED。表示一定有事務(wù),增刪改的選擇。查詢方法可以選擇SUPPORTS。
read-only:用于指定事務(wù)是否只讀。只有查詢方案才能設(shè)置為true。默認值是false,表示讀寫。
timeout:用于指定事務(wù)的超時時間。默認值是-1,表示永不超時。
rollback-for:用于指定一個異常,當(dāng)產(chǎn)生該異常時,事務(wù)回滾,當(dāng)產(chǎn)生其他異常時,事務(wù)不回滾。沒有默認值,表示任何異常都回滾。
no-rollback-for:用于指定一個異常,當(dāng)產(chǎn)生該異常時,事務(wù)不回滾,當(dāng)產(chǎn)生其他異常時,事務(wù)回滾。沒有默認值,表示任何異常都回滾。

<!-- 配置事務(wù)的通知 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
? ? <!-- 配置事務(wù)的屬性 -->
? ? <tx:attributes>
? ? ? ? <!-- 優(yōu)先級低 -->
? ? ? ? <tx:method name="*" propagation="REQUIRED" read-only="false"/>
? ? ? ? <!-- 優(yōu)先級高 -->
? ? ? ? <tx:method name="find*" propagation="SUPPORTS" read-only="true"/>
? ? </tx:attributes>
</tx:advice>

總的代碼:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
? ? ? ?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
? ? ? ?xmlns:aop="http://www.springframework.org/schema/aop"
? ? ? ?xmlns:tx="http://www.springframework.org/schema/tx"
? ? ? ?xsi:schemaLocation="
? ? ? ? http://www.springframework.org/schema/beans
? ? ? ? https://www.springframework.org/schema/beans/spring-beans.xsd
? ? ? ? http://www.springframework.org/schema/tx
? ? ? ? https://www.springframework.org/schema/tx/spring-tx.xsd
? ? ? ? http://www.springframework.org/schema/aop
? ? ? ? https://www.springframework.org/schema/aop/spring-aop.xsd">


? ? <!-- 配置數(shù)據(jù)源 -->
? ? <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
? ? ? ? <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
? ? ? ? <property name="url" value="..."></property>
? ? ? ? <property name="username" value="root"></property>
? ? ? ? <property name="password" value="123456"></property>
? ? </bean>

? ? <!-- 配置事務(wù)管理器 -->
? ? <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
? ? ? ? <property name="dataSource" ref="dataSource"></property>
? ? </bean>

? ? <!-- 配置事務(wù)的通知 -->
? ? <tx:advice id="txAdvice" transaction-manager="transactionManager">
? ? ? ? <!-- 配置事務(wù)的屬性 -->
? ? ? ? <tx:attributes>
? ? ? ? ? ? <tx:method name="*" propagation="REQUIRED"/>
? ? ? ? </tx:attributes>
? ? </tx:advice>

? ? <!-- 配置AOP -->
? ? <aop:config>
? ? ? ? <!-- 配置切入點表達式 -->
? ? ? ? <aop:pointcut id="pt1" expression="execution(* com.*.*(..))"/>
? ? ? ? <!-- 建立切入點表達式和事務(wù)通知的對應(yīng)關(guān)系 -->
? ? ? ? <aop:advisor advice-ref="txAdvice" pointcut-ref="pt1"></aop:advisor>
? ? </aop:config>


</beans>

這樣操作完后切入點中配置好的方法即可受到事務(wù)控制器的控制。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論