三个步骤:①配置哪种事务管理器JDBC的?JPA的?还是Hibnate的。 ②配置通知。③配置切点并关联通知
一、配置事务管理器
在Bean配置文件中配置事务管理器transactionManager,并注入数据源。
<!-- 配置事务管理器 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
二、 配置 通知
1.需要先导入 tx 命名空间。
2.使用tx:advice元素声明事务通知,需要指定id属性,以便AOP把通知和切入点关联起来。
3.还需要指定transaction-manager属性,其值Bean配置文件中事务管理器的id属性值。
4.tx:attributes元素,用于指定事务属性。
5.在tx:attributes元素下可以使用多个tx:method元素指定多种事务属性。
name:切点方法名称
isolation:事务的隔离级别
propogation:事务的传播行为
timeout:超时时间
read-only:是否只读
<!-- 配置 通知 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<!-- 根据方法名指定事务的属性 -->
<tx:method name="BookShopXmlService" propagation="REQUIRED"/>
<tx:method name="get*" read-only="true"/>
<tx:method name="find*" read-only="true"/>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
三、配置切点,并把事务切点与事务通知关联起来
1.在 aop:config元素下,使用aop:pointcut元素声明切入点,其expression属性指定切入点表达式,还需要指定id属性。
2.在 在aop:config元素下,使用aop:advisor元素声明一个增强器,将事务通知和切入点关联起来,使用 advice-ref属性指定事务通知,用pointcut-ref属性指定切入点。
<!-- 配置事务切点,以及把事务切入点和事务属性关联起来 -->
<aop:config>
<aop:pointcut expression="execution(* com.sqp.spring.service.*.*(..))"
id="txPointcut"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/>
</aop:config>