之前提到了使用spring基于注解方式配置事物,它还支持xml文件方式配置事物;
在xml文件配置方式中,我们使用到了事物管理器,AOP,通知等;
首先在配置文件中配置好事务管理器:
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
然后配置一个事物通知:
<tx:advice transaction-manager="txManager" id="txAdvice">
<tx:attributes>
<tx:method name="get*" propagation="NOT_SUPPORTED"/>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
transaction-manager="txManager"为通知指定事务管理器;
<tx:method name="get*" propagation="NOT_SUPPORTED"/>表示让get开头的方法不支持事物管理;
后边表示其他的方式支持事物管理
接着在配置aop,拦截指定的业务类:
<aop:config>
<aop:pointcut expression=
"execution(* tk.sweetvvck.service..*.*(..))" id="txPointcut"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/>
</aop:config>
这样我们就完成了基于xml文件方式配置spring事物管理,tk.sweetvvck.service及其子包下的类都将会被拦截,相应方法会被spring管理其事物;
spring容器会为相应的类动态生成代理类来实现aop以及事物管理。