1 配置事务管理器
<bean id="transactionManager" name="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource"> <ref bean="dataSource"/> </property> </bean>
@Autowired private DataSourceTransactionManager transactionManager;
@Test
public void test(){
DefaultTransactionDefinition def = new DefaultTransactionDefinition(); def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW); // 定义事务传播 TransactionStatus status = transactionManager.getTransaction(def);
try {
许多sql修改语句
// 提交事务 transactionManager.commit(status); } catch (Exception e) { // 回滚事务
transactionManager.rollback(status);
}
}
注意:
如果还有一个方法test2()存在事务,且使用事务传播:PROPAGATION_REQUIRES_NEW,
当test1中调用test2,且两个事务的sql处理涉及到修改同一个表,将会导致死锁
故而,一般是使用PROPAGATION_REQUIRED
本文介绍了如何在Spring框架中配置事务管理器,并通过Java代码示例展示了如何使用DataSourceTransactionManager进行事务控制,包括提交和回滚操作。同时,还强调了在多事务方法调用时,不同传播行为可能导致的问题。
7945

被折叠的 条评论
为什么被折叠?



