声明式事务基于Aspectil XML方式
注:基于[ransalctionProxyFactoryBean.代理的方式是比较古老的方式,我们在这里就不赘述了。
基于XML方式的配置:
删除applicationContext.xml中的事务管理模版的配置,就是下面的配置:
<!--事务管理的模板-->
<bean id="transacti onTemplate"
class="org. springframework . transacti on. support .Transacti onTemplate">
<property name=" transacti onManager" ref="transacti onManager" />
</bean>
添加事务定义的配置和AOP的配置: .
<!--基于AspectJ申明式事务XML配置方式-->
<!--定义一个增强-->
<tx:advice id="txAdvice" transacti on-manager="transacti onManager">
<!--增强(事务)的属性的配置-->
<tx: attri butes>
<!-- isolation: DEFAULT ,事务的隔离级别。
propagation:事务的传播行为.
read-only: false, 不是只读
timeout: -1
no-rollback-for:发生哪些异常不回滚
rol1back-for:发生哪些异常回滚事务-->
<tx: method name= "transfer" isol ati on="DEFAULT" propagati on="REQUIRED"/>
<tx : method name=" save*" isolation="DEFAULT" propagation= ”REQUIRED"/>
<tx :method name="update*" isolation="DEFAULT" propagation="REQUIRED"/>
<tx :method name="delete*" isolation= "DEFAULT" propagation="REQUIRED" />|
</tx:attributes>
</tx:advice>
<!-- aop配置定义切面和切点的信息-->
<aop:config>
<!--定义切点:哪些类的哪些方法应用增强-->
<aop: poi ntcut expression="execution(* com . dk . beans. service..*.*(..))" id="mypointcut" />
<!--定义切面: -->
<aop:advisor advi ce-ref="txAdvice" pointcut- ref-"mypointcut" />
</aop :config>