错误分析:
我所撰写的代码如下,在使用编程式事务的时候,我未提交或回滚事务就直接返回,因为连接池默认连接数的大小是10,所以到第十一次的时候连接池就会使用完,导致任务无法进行。
@Autowired
private NstExpressScheduleplanMapper scheduleplanMapper;
@Autowired
private PlatformTransactionManager transactionManager;
public CommonResult testTransactionDefinition() {
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
TransactionStatus status = transactionManager.getTransaction(def);
scheduleplanMapper.getRandomAgent();
return CommonResult.success();
}
接口无法给予响应。
解决方法:
在代码内设置finally模块,确保一定提交或者回滚,代码修改如下:
@Autowired
private NstExpressScheduleplanMapper scheduleplanMapper;
@Autowired
private PlatformTransactionManager transactionManager;
public CommonResult testTransactionDefinition() {
TransactionStatus status = null;
try {
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
status = transactionManager.getTransaction(def);
scheduleplanMapper.getRandomAgent();
transactionManager.commit(status);
}catch (Exception e){
transactionManager.rollback(status);
}finally {
transactionManager.rollback(status);
}
return CommonResult.success();
}