自動任務類:
@PersistJobDataAfterExecution @DisallowConcurrentExecution public class ReCodeBack implements Job { private static final Logger LOGGER = LoggerFactory.getLogger(ReCodeBack.class); @Autowired ReCodeBackTag reCodeBackTag; @Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { reCodeBackTag.backupsReCode(); } }
自動任務注解:
@PersistJobDataAfterExecution
@DisallowConcurrentExecution
任務需求是需要添加事務
運用spring注解@Transactional注解
/** * 添加(刪除)表數據 * @param object * @param modular * @return */ @Transactional(rollbackFor = Exception.class) public int tableOperation (Object object,String modular){ int count = 0; try{ ....... }catch (Exception e) { LOGGER.info("[添加(刪除)表數據] ERROR :{}", e.getMessage()); //事務回滾 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); //任務異常中斷,立即重新運行 JobExecutionException e2 = new JobExecutionException(e); e2.setRefireImmediately(true); throw e2; }finally { return count; } }
注意:當作者在自動任務類進行使用@Transactional注解時,程序會進行報錯(太懶……原因沒搞清楚,后續會補上),所以作者分成了兩個類來編寫的,一個定時調用類,一個業務類,如上代碼。