Spring框架的事务管理之基于AspectJ的XML方式(重点掌握)
生活随笔
收集整理的這篇文章主要介紹了
Spring框架的事务管理之基于AspectJ的XML方式(重点掌握)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 步驟一:恢復轉賬開發環境(轉賬開發環境見“https://www.cnblogs.com/wyhluckdog/p/10137283.html”) 2.步驟二:引入AOP的開發包
3.步驟三:引入applicationContext.xml配置文件
* 配置文件的基本配置為:
<?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:jdbc="http://www.springframework.org/schema/jdbc"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"></beans>
4.步驟四:創建對應的包結構和類(具體內容見“https://www.cnblogs.com/wyhluckdog/p/10137283.html”) * com.huida.demo1* AccountService* AccountServlceImpl* AccountDao* AccountDaoImpl
5.步驟五:引入Spring的配置文件,將類配置到Spring中
<bean id="accountDao" class="com.huida.demo1.AccountDaoImpl"><property name="dataSource" ref="dataSource"/></bean><bean id="accountService" class="com.huida.demo1.AccountServiceImpl"><property name="accountDao" ref="accountDao"/> </bean>
6.步驟六:配置事務管理器 <!-- 配置事務管理器 --><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"/></bean> 7.步驟七:配置事務增強 <!-- 配置事務增強 --><tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><!--name :綁定事務的方法名,可以使用通配符,可以配置多個。propagation :傳播行為isolation :隔離級別read-only :是否只讀timeout :超時信息rollback-for:發生哪些異?;貪L.no-rollback-for:發生哪些異常不回滾.--><!-- 哪些方法加事務 --><tx:method name="pay" propagation="REQUIRED"/></tx:attributes></tx:advice> 8.步驟八:書寫切面類MyAdvice:
package com.huida.demo1;public class MyAdvice {public void log(){System.out.println("添加日志");}}
<aop:config><aop:aspect ref="myAdvice"><aop:before method="log" pointcut="execution(* com.huida.demo1.AccountServiceImpl.pay(..))"/></aop:aspect></aop:config>
3.步驟三:引入applicationContext.xml配置文件
* 配置文件的基本配置為:
<?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:jdbc="http://www.springframework.org/schema/jdbc"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"></beans>
?*?管理C3P0連接池
* 先引入C3P0的jar包* com.springsource.com.mchange.v2.c3p0-0.9.1.2.jar* 編寫配置文件<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="driverClass" value="com.mysql.jdbc.Driver"/><property name="jdbcUrl" value="jdbc:mysql:///spring_day03"/><property name="user" value="root"/><property name="password" value="root"/></bean>4.步驟四:創建對應的包結構和類(具體內容見“https://www.cnblogs.com/wyhluckdog/p/10137283.html”) * com.huida.demo1* AccountService* AccountServlceImpl* AccountDao* AccountDaoImpl
5.步驟五:引入Spring的配置文件,將類配置到Spring中
<bean id="accountDao" class="com.huida.demo1.AccountDaoImpl"><property name="dataSource" ref="dataSource"/></bean><bean id="accountService" class="com.huida.demo1.AccountServiceImpl"><property name="accountDao" ref="accountDao"/> </bean>
6.步驟六:配置事務管理器 <!-- 配置事務管理器 --><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"/></bean> 7.步驟七:配置事務增強 <!-- 配置事務增強 --><tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><!--name :綁定事務的方法名,可以使用通配符,可以配置多個。propagation :傳播行為isolation :隔離級別read-only :是否只讀timeout :超時信息rollback-for:發生哪些異?;貪L.no-rollback-for:發生哪些異常不回滾.--><!-- 哪些方法加事務 --><tx:method name="pay" propagation="REQUIRED"/></tx:attributes></tx:advice> 8.步驟八:書寫切面類MyAdvice:
package com.huida.demo1;public class MyAdvice {public void log(){System.out.println("添加日志");}}
? ?9.步驟九:配置AOP的切面
<bean id="myAdvice" class="com.huida.demo1.MyAdvice"></bean><aop:config><aop:aspect ref="myAdvice"><aop:before method="log" pointcut="execution(* com.huida.demo1.AccountServiceImpl.pay(..))"/></aop:aspect></aop:config>
? 10.完整的配置文件的配置信息為:
<?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:jdbc="http://www.springframework.org/schema/jdbc"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="driverClass" value="com.mysql.jdbc.Driver"/><property name="jdbcUrl" value="jdbc:mysql:///spring-day03"/><property name="user" value="root"/><property name="password" value="root"/></bean><!-- 配置事務管理器 --><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"/></bean><!-- 配置事務增強 --><tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><tx:method name="pay" propagation="REQUIRED"/></tx:attributes></tx:advice><bean id="myAdvice" class="com.huida.demo1.MyAdvice"></bean><aop:config><aop:aspect ref="myAdvice"><aop:before method="log" pointcut="execution(* com.huida.demo1.AccountServiceImpl.pay(..))"/></aop:aspect></aop:config><bean id="accountDao" class="com.huida.demo1.AccountDaoImpl"><property name="dataSource" ref="dataSource"/></bean><bean id="accountService" class="com.huida.demo1.AccountServiceImpl"><property name="accountDao" ref="accountDao"/><!-- <property name="transactionTemplate" ref="transactionTemplate"/> --></bean></beans>11.步驟十:編寫測試類
package com.huida.demo1;import javax.annotation.Resource;import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:applicationContext.xml") public class Demo1 {@Resource(name="accountService")private AccountService accountService;@Testpublic void run1(){accountService.pay("小明","小紅",1000);} }12.單元測試run1方法,刷新spring-day03數據庫中的user表,可以看到小明的money減少了1000,而小紅的money增加了1000.
轉載于:https://www.cnblogs.com/wyhluckdog/p/10137712.html
總結
以上是生活随笔為你收集整理的Spring框架的事务管理之基于AspectJ的XML方式(重点掌握)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一些操作记录备查
- 下一篇: python中为什么需要使用“if __