importlombok.Data;importlombok.extern.slf4j.Slf4j;importjava.io.PrintWriter;importjava.io.StringWriter;@Data@Slf4jpublicclassDataSyncTaskimplementsRunnable{privateString stuid;privateString displayId;publicDataSyncTask(String stuid,String displayId){this.stuid = stuid;this.displayId = displayId;}/**
* When an object implementing interface <code>Runnable</code> is used
* to create a thread, starting the thread causes the object's
* <code>run</code> method to be called in that separately executing
* thread.
* <p>
* The general contract of the method <code>run</code> is that it may
* take any action whatsoever.
*
* @see Thread#run()
*/@Overridepublicvoidrun(){
log.info("[DataSyncTask] run task start, stuid={}, displayId={}", stuid, displayId);DataSyncComponent syncComponent =SpringContextUtil.getBean(DataSyncComponent.class);try{
syncComponent.syncData(stuid, displayId);}catch(Exception e){
log.error("[DataSyncTask] error", e);}
log.info("[DataSyncTask] run task end, stuid={}, displayId={}", stuid, displayId);}publicstaticStringgetStackTrace(Exception e){StringWriter stringWriter =newStringWriter();PrintWriter printWriter =newPrintWriter(stringWriter);
e.printStackTrace(printWriter);
printWriter.close();try{
stringWriter.close();}catch(Exception e1){
log.error("[getStackTrace] failed", e1);}return stringWriter.toString();}}
@Slf4j@ComponentpublicclassDataSyncRunnerimplementsApplicationRunner{/**
* Callback used to run the bean.
*
* @param args incoming application arguments
* @throws Exception on error
*/@Overridepublicvoidrun(ApplicationArguments args)throwsException{//运行任务执行器DataSyncTaskManager dataSyncTaskManager =DataSyncTaskManager.getManager();
dataSyncTaskManager.runTaskDaemon();}}