1、直接代码如下:
<?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:p="http://www.springframework.org/schema/p" 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-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> 此处省略N个字。。。。。 <!-- 事务处理器 --> <bean name="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> <tx:advice id="transactionAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="get*" read-only="true"></tx:method> <tx:method name="find*" read-only="true"></tx:method> <tx:method name="login" read-only="true"></tx:method> <tx:method name="save*" rollback-for="Exception"></tx:method> <tx:method name="edit*" rollback-for="Exception"></tx:method> <tx:method name="del*" rollback-for="Exception"></tx:method> </tx:attributes> </tx:advice> <aop:config> <aop:pointcut expression="execution(* edu.wanghuan.hrm.services.impl.*.*(..))" id="serviceMethod"/> <aop:advisor advice-ref="transactionAdvice" pointcut-ref="serviceMethod"/> </aop:config> </beans>
2、解释
要点一:execution(* com.hisun.mvc.service..*.*(..))"中几个通配符的含义:
第一个 * —— 通配 任意返回值类型
第二个 * —— 通配 包com.hisun.mvc.service下的任意class
第三个 * —— 通配 包com.hisun.mvc.service下的任意class的任意方法
第四个 .. —— 通配 方法可以有0个或多个参数
综上:包com.hisun.mvc.service下的任意class的具有任意返回值类型、任意数目参数和任意名称的方法。
要点二:<tx:advice/> 有关的设置
这一节里将描述通过 <tx:advice/>
标签来指定不同的事务性设置。默认的 <tx:advice/>
设置如下:
-
事务传播设置是
REQUIRED
-
隔离级别是
DEFAULT
-
事务是 读/写
-
事务超时默认是依赖于事务系统的,或者事务超时没有被支持。
-
任何
RuntimeException
将触发事务回滚,但是任何 checkedException
将不触发事务回滚这些默认的设置当然也是可以被改变的。
要点三:<tx:advice/> 和 <tx:attributes/>
标签里的 <tx:method/>
各种属性设置总结
属性 | 是否需要 | 默认值 | 描述 |
name | 是 | 与事务属性关联的方法名。 通配符(*)可以用来指定一批关联到相同的事务属性的方法。 如: | |
propagation | 否 | REQUIRED | 事务传播行为 |
isolation | 否 | DEFAULT | 事务隔离级别 |
timeout | 否 | -1 | 事务超时的时间(以秒为单位) |
read-only | 否 | false | 事务是否只读? |
rollback-for | 否 | 将被触发进行回滚的 Exception(s) ;以逗号分开。 如:'com.foo.MyBusinessException,ServletException' | |
no-rollback-for | 否 | 不 被触发进行回滚的 Exception(s) ;以逗号分开。 如:'com.foo.MyBusinessException |