SpringBoot中的编程式事务
手动回滚事务
1
| TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
手动开启事务
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| private final DataSourceTransactionManager transactionManager;
public void execMonthd(List<DataList> datas){ TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager); transactionTemplate.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW); transactionTemplate.setTimeout(30); datas.forEach(data-> { ruleTransactionTemplate.execute(call-> { try { checkData(data); } catch (Exception e) { call.setRollbackOnly(); log.error("事务回滚", data.getName()); } return null; }); }); }
|
或:通过SpringBoot管理Bean,作为依赖导入使用
1 2 3 4 5 6 7 8 9
|
@Bean public TransactionTemplate transactionTemplate() { TransactionTemplate transactionTemplate=new TransactionTemplate(); transactionTemplate.setTransactionManager(transactionManager()); return transactionTemplate; }
|