當(dāng)前位置:
首頁(yè) >
前端技术
> javascript
>内容正文
javascript
Spring AOP (事务管理)
生活随笔
收集整理的這篇文章主要介紹了
Spring AOP (事务管理)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一、聲明式事務(wù)管理的概括
聲明式事務(wù)(declarative transaction management)是Spring提供的對(duì)程序事務(wù)管理的方式之一。 Spring的聲明式事務(wù)顧名思義就是采用聲明的方式來(lái)處理事務(wù)。這里所說(shuō)的聲明,就是指在配置文件中聲明。用在Spring配置文件中聲明式的處理事務(wù)來(lái)代替代碼式的處理事務(wù)。這樣的好處是,事務(wù)管理不侵入開(kāi)發(fā)的組件,具體來(lái)說(shuō),業(yè)務(wù)邏輯對(duì)象就不會(huì)意識(shí)到正在事務(wù)管理之中,事實(shí)上也應(yīng)該如此,因?yàn)槭聞?wù)管理是屬于系統(tǒng)層面的服務(wù),而不是業(yè)務(wù)邏輯的一部分,如果想要改變事務(wù)管理策劃的話(huà),也只需要在定義文件中重新配置即可;在不需要事務(wù)管理的時(shí)候,只要在設(shè)定文件上修改一下,即可移去事務(wù)管理服務(wù),無(wú)需改變代碼重新編譯,這樣維護(hù)起來(lái)極其方便。 Spring使用AOP來(lái)完成聲明式的事務(wù)管理,因而聲明式事務(wù)是以方法為單位,Spring的事務(wù)屬性自然就在于描述事務(wù)應(yīng)用至方法上的策略,在Spring中事務(wù)屬性有以下四個(gè)參數(shù): 1.傳播行為 propagation:用于設(shè)置事務(wù)傳播屬性。該屬性類(lèi)型為 Propagation 枚舉,默認(rèn)值為Propagation.REQUIRED。 2.隔離級(jí)別 isolation:用于設(shè)置事務(wù)的隔離級(jí)別。該屬性類(lèi)型為 Isolation 枚舉,默認(rèn)值為Isolation.DEFAULT。 3.只讀提示 readOnly:用于設(shè)置該方法對(duì)數(shù)據(jù)庫(kù)的操作是否是只讀的。該屬性為 boolean,默認(rèn)值為 false。 4.事務(wù)超時(shí)期間 timeout:用于設(shè)置本操作與數(shù)據(jù)庫(kù)連接的超時(shí)時(shí)限。單位為秒,類(lèi)型為 int,默認(rèn)值為-1,即沒(méi)有時(shí)限。二、在配置文件中配置事務(wù)管理
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:context="http://www.springframework.org/schema/context" 5 xmlns:aop="http://www.springframework.org/schema/aop" 6 xmlns:tx="http://www.springframework.org/schema/tx" 7 xsi:schemaLocation=" 8 http://www.springframework.org/schema/beans 9 http://www.springframework.org/schema/beans/spring-beans.xsd 10 http://www.springframework.org/schema/context 11 http://www.springframework.org/schema/context/spring-context.xsd 12 http://www.springframework.org/schema/tx 13 http://www.springframework.org/schema/tx/spring-tx.xsd 14 http://www.springframework.org/schema/aop 15 http://www.springframework.org/schema/aop/spring-aop.xsd"> 16 17 <!-- 注冊(cè)數(shù)據(jù)源:C3P0數(shù)據(jù)源 --> 18 <bean id="myDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> 19 <property name="driverClass" value="${jdbc.driverClass}" /> 20 <property name="jdbcUrl" value="${jdbc.url}" /> 21 <property name="user" value="${jdbc.user}" /> 22 <property name="password" value="${jdbc.password}" /> 23 </bean> 24 25 <!-- 注冊(cè)JDBC屬性文件 --> 26 <context:property-placeholder location="classpath:jdbc.properties"/> 27 28 <!-- 注冊(cè)Dao --> 29 <bean id="accountDao" class="com.tongji.dao.AccountDaoImpl"> 30 <property name="dataSource" ref="myDataSource"/> 31 </bean> 32 <bean id="stockDao" class="com.tongji.dao.StockDaoImpl"> 33 <property name="dataSource" ref="myDataSource"/> 34 </bean> 35 <!-- 注冊(cè)Service --> 36 <bean id="stockService" class="com.tongji.service.StockProcessServiceImpl"> 37 <property name="accountDao" ref="accountDao"/> 38 <property name="stockDao" ref="stockDao"/> 39 </bean> 40 41 <!-- 事務(wù) --> 42 <!-- 注冊(cè)事務(wù)管理器 --> 43 <bean id="myTxManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 44 <property name="dataSource" ref="myDataSource"/> 45 </bean> 46 <!-- 注冊(cè)事務(wù)通知 --> 47 <tx:advice id="txAdvice" transaction-manager="myTxManager"> 48 <tx:attributes> 49 <!-- 指定在連接點(diǎn)方法上應(yīng)用的事務(wù)屬性 --> 50 <tx:method name="open*" isolation="DEFAULT" propagation="REQUIRED"/> 51 <tx:method name="buyStock" isolation="DEFAULT" propagation="REQUIRED" rollback-for="StockException"/> 52 </tx:attributes> 53 </tx:advice> 54 55 <!-- AOP配置 --> 56 <aop:config> 57 <!-- 指定切入點(diǎn) --> 58 <aop:pointcut expression="execution(* *..service.*.*(..))" id="stockPointCut"/> 59 <aop:advisor advice-ref="txAdvice" pointcut-ref="stockPointCut"/> 60 </aop:config> 61 </beans>?
轉(zhuǎn)載于:https://www.cnblogs.com/zq-boke/p/8515505.html
總結(jié)
以上是生活随笔為你收集整理的Spring AOP (事务管理)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Rxjava基础
- 下一篇: javascript笔记整理(对象基础)