注解开启事务
Spring提供了注解开启事务的办法,即在类上或者Public的方法上加@Transactional(rollbackFor = Exception.class)注解即可。
注意:加了这个注解后使用try-catch去抓取,则该事务就会失效,永远都不会碰到回滚,这里我们可以在catch中去throws一个异常,也可手动回滚TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
手动开启和回滚事务
首先注入一个Spring的事务管理器
@autowired
private PlatformTransactionManager platformTransactionManager;
public void test(){
// 手动开启事务
DefaultTransactionDefinition defultTransactionDefinition = new DefaultTransactionDefinition();
defultTransactionDefinition .setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
TransactionStatus status = platformTransactionManager.getTransaction(defultTransactionDefinition );
try{
//操作数据
·······
//提交事务
platformTransactionManager.commit(status);
}catch(Exception e){
//回滚事务
platformTransactionManager.rollback(status);
e.printStackTrace();
}
}