编程式事物
transactionManager中配置数据源 才能去进行事务管理
1)配置数据源
<bean id="dataSource" class="">
<property name="driverClass" value="">
<property name="driverClass" value="">
<property name="driverClass" value="">
<property name="driverClass" value="">
</bean>
配置管理事物
<bean id ="transactionManager" class ="org.springframework,jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
配置事物管理的模板
<bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemlate">
<property name="transactionManager" ref="transactionManager"/>
</bean>
声明式事物
第一种方式
<bean id="dataSource" class="zxcxc">
<property name="driverClass" value="">
<property name="driverClass" value="">
<property name="driverClass" value="">
<property name="driverClass" value="">
</bean>
<!--真正管理事务的-->
<bean id ="transactionManager" class ="org.springframework,jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!--配置service层的代理-->
<bean id="AAA" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<!--对那个进行代理-->
<property name="target" ref="service类的id"/>
<!--注入事务管理器-->
<property name="transactionManager" ref="transactionManager"/>
<!--注入事务属性-->
<property name="transactionAttributes">
eg:
PROPAGATION:传播行为
ISOLATION:隔离级别
readOnly:只读(不可以进行修改,插入,删除操作)
-Exception:发生那些异常回滚事务
+Exception:发生那些异常事务不回滚
<props>
* <prop key="insert*">PROPAGATION_REQUIRED</prop>
* <prop key="update*">PROPAGATION_REQUIRED,+java.lang.ArithmeticException</prop>
* <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
* </props>
</property>
</bean>
第二种方式
<bean id="dataSource" class="zxcxc">
<property name="driverClass" value="">
<property name="driverClass" value="">
<property name="driverClass" value="">
<property name="driverClass" value="">
</bean>
<!--真正管理事务器-->
<bean id ="transactionManager" class ="org.springframework,jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!--开启注解事务-->
<tx:annotation-drivern transaction-manager="transactionManager"/>
使用注解即可
@Transactional(propagation=Propagation.REQUIRED)
第三种方式
<bean id="dataSource" class="zxcxc">
<property name="driverClass" value="">
<property name="driverClass" value="">
<property name="driverClass" value="">
<property name="driverClass" value="">
</bean>
<!--真正管理事务的-->
<bean id ="transactionManager" class ="org.springframework,jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!--配置事务的通知:(事务的增强)-->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<!--方法名字-->
<tx:method name="hahah" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
<!----配置切面>
<aop:config>
<!--配置切入点-->
<aop:pointcut expression="表达式" id="AAA"/>
<!--配置切面-->
<aop:advisor advice-ref="txAdvice" pointcut-ref="AAA">
</aop:config>
个人觉得第二种好用