標籤:通過 for run 部分 rop 切面 add 執行 img
一、 XML,使用tx標籤配置攔截器實現事務二、 Annotation方式
一、XML,使用tx標籤配置攔截器實現事務
中主要配置中是tx:advice和aop:config兩個配置節,以Spring AOP的方式實現交易管理。
tx:advice配置了事務的管理者是transactionManager,同時tx:method也規定了如果方法名匹配“add*”和“get*”方法時使用事務,propagation是設定事務的傳播層級。除了“add*”和“get*”方法,其他的方法的事務是唯讀(典型地,對於只執行查詢的事務你會將該屬性設為true,如果出現了更新、插入或是刪除語句時唯讀事務就會失敗)
aop:config指定了一個aop:pointcut去引用上邊的advice。
這樣就通過AOP的攔截機制實現了事務,方法上面就不用@Transactional了
二、Annotation方式
將設定檔中
<!-- 通知 -->
<!-- <tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<!– 傳播行為 –>
<tx:method name="delete*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" no-rollback-for="java.lang.RuntimeException"/>
<tx:method name="insert*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.RuntimeException" />
<tx:method name="add*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.RuntimeException" />
<tx:method name="create*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.RuntimeException" />
<tx:method name="update*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" />
<tx:method name="save*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" />
<tx:method name="find*" propagation="SUPPORTS" read-only="true" />
<tx:method name="get*" propagation="SUPPORTS" read-only="true" />
<tx:method name="select*" propagation="SUPPORTS" read-only="true" />
<tx:method name="query*" propagation="SUPPORTS" read-only="true" />
</tx:attributes>
</tx:advice>
<!– 切面 –>
<aop:config>
<aop:pointcut id="transactionPointcut" expression="execution(* com.xwg.service.*.*(..))" />
<aop:advisor pointcut-ref="transactionPointcut" advice-ref="txAdvice" />
</aop:config> -->
這部分注釋掉,然後方法上面加@Transactional註解就可以了,
如果在類上面加這個註解,說明這個類下面所有的方法都啟用事務
Java開發中使用事務