value 当在配置文件中有多个 TransactionManager , 可以用该属性指定选择哪个事务管理器。
propagation 事务的传播行为,默认值为 REQUIRED。
isolation 事务的隔离度,默认值采用 DEFAULT-没有隔离级别,多事务并发会出现脏读、幻觉度、不可重复读
。
timeout 事务的超时时间,默认值为-1
-永不超时。如果超过该时间限制但事务还没有完成,则自动回滚事务。
read-only 指定事务是否为只读事务,默认值为 false;为了忽略那些不需要事务的方法,比如读取数据,可以设置 read-only 为 true
。
rollback-for 用于指定能够触发事务回滚的异常类型默认是RuntimeExctption
,如果有多个异常类型需要指定,各类型之间可以通过逗号分隔。
no-rollback- for 抛出 no-rollback-for 指定的异常类型,不回滚事务。
propagation="REQUIRED"
isolation="READ_COMMITTED"
timeout="-1"
read-only="false"
rollback-for="java.lang.Throwable"
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<tx:advice id="txAdvice"
transaction-manager="txManager">
<tx:attributes>
<tx:method name="*"
propagation="REQUIRED"
isolation="READ_COMMITTED"
timeout="-1"
read-only="false"
rollback-for="java.lang.Throwable"/>
</tx:attributes>
</tx:advice>
timeout="-1"永不超时,多次尝试连接
<aop:config>
<aop:pointcut id="operation"
expression="execution(* beans.service..*.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut="operation"/>
</aop:config>
查询的方法最好设置为
read-only="trure"
方法里面(..) ..代表任意
..*本包及子包中的类
execution(* beans.service..*.*(..))
第一个*
代表任意的返回值
第一个..
代表本包以及子包
第二个*
代表任意一个类
第三个*
代表任意一个方法
第二个..
代表方法的参数时任意的
xml的方式代码侵入性小,灵活性差
一个切面可以有多个通知,切面是类,在运行时表现的是对象;通知是方法,即切面中定义的扩展业务的一个步骤;连接点是访问的目标方法;一些列目标方法的集合成为切入点