spring的事务配置方法

时间:2020-11-30 19:31:00

  spring事务的配置有两种方式

1.xml配置的声明式事务配置

(1)配置数据源信息dataSource(使用阿里的数据源)

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
  destroy-method="close">
  <property name="url" value="${jdbc.url}" />
  <property name="username" value="${jdbc.username}" />
  <property name="password" value="${jdbc.password}" />
  <property name="driverClassName" value="${jdbc.driver}" />
  <property name="maxActive" value="10" />
  <property name="minIdle" value="5" />
</bean>

(2)注册事务管理器(使用的是DataSourceTransactionManager事务管理器)

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

(3)通过代理方式配置事务通知,配置事务的切入点,将切入点作用到目标对象中(组装切面)

(3.1)配置事务通知

<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<!-- 配置事务的传播属性 -->
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="insert*" propagation="REQUIRED" />
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="create*" propagation="REQUIRED" />
<tx:method name="delete*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="find*" propagation="SUPPORTS" read-only="true" />
<tx:method name="select*" propagation="SUPPORTS" read-only="true" />
<tx:method name="get*" propagation="SUPPORTS" read-only="true" />
</tx:attributes>
</tx:advice>

(3.2)组装切点表达式

<!-- 组装切面 -->
<aop:config>
<!-- 配置切点表达式 ,对service包下面的所有方法都启用事务-->
<aop:pointcut expression="execution(* nyist.e3.service..*.*(..))"
id="pc" />
<!-- 将事务的传播属性作用到切点函数中 (组装切面)-->
<aop:advisor advice-ref="txAdvice" pointcut-ref="pc" />
</aop:config>

2.基于注解方式的事务配置

只需要在spring中开启事务配置的注解即可

<!-- 开启事务注解 -->
<mvc:annotation-driven />